出于有害目的在XML中注入Java字节码

时间:2011-06-17 00:47:49

标签: java xml security jaxb jax-rs

所以我一直在想是否有办法发送XML,使得XML包含(字节码)中的代码,这些代码将由JVM无意中执行。我正在使用java,所以我认为未编译的代码将无法正常工作。我想我需要在XML中注入字节码来欺骗JVM?我想尝试确保我正在构建的Web服务是安全的。我使用JAXB进行xml编组解组和Jersey作为Web服务处理程序。

3 个答案:

答案 0 :(得分:4)

无意?我不这么认为。

JAXB marshaller将XML值反序列化为给定对象的状态,但类及其行为将由您决定。我没有看到在XML中发送原始字节码并做任何有害的事情。

您可以使用Rhino发送Java对象可以执行的JSON对象,但这几乎不是无意的。

您的服务可能存在其他安全问题,但Java字节码注入攻击不是其中之一。

无论如何,您应该在绑定之前验证发送给您的所有数据。

答案 1 :(得分:2)

关于唯一与xml相关的漏洞(我知道)是“外部实体”,您可以阅读here。非常确定这些天默认情况下jdk已禁用外部实体处理。

答案 2 :(得分:1)

XML是数据,任何收件人都不太可能尝试执行它。

但是,当然,一些XML词汇表使用这些数据来包含您可以将其视为执行操作的指令,然后收件人可能会被愚弄为执行不当操作,您可能认为这是一个安全问题。此漏洞不在XML级别,而是在应用程序协议(词汇表)级别。攻击必须使用在此协议上下文中有意义的指令,这更像是<employee action="delete"/>,而不是字节码级别的指令。