警惕XXE嵌套实体攻击:一个递归就能让服务器内存爆炸!百度云防护内置规则精准拦截

只需要一个精心构造的XML文件,就能让服务器内存耗尽、CPU飙满,甚至整个服务崩溃——这就是XXE(XML外部实体)拒绝服务攻击中的“嵌套实体”攻击,俗称“Billion Laughs”或“指数实体扩展”。今天我们就来拆解这种攻击的原理,并介绍百度云防护如何用一条规则(规则ID 4206)轻松防住它。


一、 什么是XXE?为什么嵌套实体攻击如此致命?

XXE(XML External Entity)攻击是指攻击者利用XML解析器对外部实体的处理特性,进行恶意操作,包括:

  • 文件读取:读取服务器上的敏感文件
  • SSRF:发起内网探测
  • 拒绝服务(DoS):通过递归实体耗尽内存/CPU

嵌套实体拒绝服务攻击,正是利用XML实体嵌套展开时的指数级扩展,让解析器陷入无限循环或内存爆炸。

1.1 “Billion Laughs”攻击原理

一个典型的“Billion Laughs”攻击载荷如下:

<?xml version="1.0"?>
<!DOCTYPE lolz [
  <!ENTITY lol "lol">
  <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
  <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
  ...
]>
<lolz>&lol9;</lolz>

每一层实体都将上一层的实体数量扩大10倍。当解析器展开&lol9;时,实际会生成10^9个“lol”字符串,即10亿个字符。如果解析器一次性将实体全部展开到内存中,服务器内存瞬间耗尽,导致服务崩溃。

1.2 攻击危害

  • 服务器宕机:内存耗尽,进程崩溃
  • 业务中断:依赖XML解析的服务全部不可用
  • 连锁反应:如果XML解析器是共享进程(如Java的某些解析器),可能影响同一服务器上的其他应用

这类攻击门槛极低,只需发送一个XML请求即可实现,是黑客常用的低成本“炸弹”。

二、 为什么传统防护难以拦截嵌套实体攻击?

  • 特征不明显:攻击载荷只是正常的XML实体定义,没有SQL注入、XSS等明显的关键词。
  • 深度嵌套:攻击者可以控制嵌套层数,传统WAF如果只检测第一层,很容易漏过。
  • 多种变形:除了“lol”实体,还可以用其他实体名、不同嵌套深度、混合外部实体等方式绕过。

要有效拦截这类攻击,WAF必须具备XML语法解析能力,能够递归识别实体嵌套的深度和扩展规模,并在到达危险阈值前阻断请求。

三、 百度云防护如何拦截XXE嵌套实体攻击?

从百度云防护的内置规则库可以看到,专门有一条规则用于检测此类攻击:

规则名称规则ID风险等级防护类型规则描述
Injection.xxe_nested_entity.A4206中风险注入检测XXE拒绝服务攻击的嵌套实体结构

这条规则的工作原理如下:

3.1 深度解析XML结构

当请求体为XML格式时,百度云防护WAF会完整解析XML文档结构,提取其中的实体定义和嵌套关系。无论嵌套多少层,引擎都能准确识别出实体之间的引用链条。

3.2 检测嵌套深度与扩展规模

规则会统计实体嵌套的深度潜在展开规模。一旦发现嵌套深度超过预设阈值(比如10层),或者展开后的大小可能超出合理范围,立即判定为攻击。

3.3 智能阻断,不影响正常业务

对于正常XML请求(如RPC调用、配置文件上传),嵌套深度通常很浅(1-2层)。规则经过海量样本训练,能精准区分恶意嵌套和正常业务,误报率极低。

3.4 配合其他防护形成纵深

除了规则4206,百度云防护还内置了其他XXE防护规则(如规则4200检测XXE外带数据,规则4206检测嵌套实体),形成对XXE攻击的立体防御。

四、 如何启用这条规则?

如果你已经接入百度云防护,只需两步:

  1. 登录百度云防护控制台 → 防护配置Web防护内置规则
  2. 搜索规则ID 4206,确认状态为“开启”,动作为“拦截”(或先设为“观察”测试)

如果误报率较高(极少情况),可以添加白名单放行特定业务接口,但建议保持开启。

五、 主机吧小结:别让XML成为你的“内存炸弹”

XXE嵌套实体攻击是一种经典但依然有效的攻击手段,很多开发者在处理XML时忽略了实体嵌套的安全问题。而百度云防护的规则4206,正是为这类“隐藏炸弹”量身定制的防线。

对于站长和企业,除了依赖WAF,还应遵循安全开发规范:

  • 禁用XML外部实体解析(在XML解析器中关闭DTD和外部实体)
  • 对用户提交的XML进行严格校验
  • 部署专业WAF作为兜底防护

如果你还不确定自己的系统是否存在XXE风险,或者想为网站加上一道可靠的防线,欢迎联系主机吧。我们提供免费安全评估和配置指导,帮你把“嵌套炸弹”挡在门外。


主机吧 | 百度云防护官方合作伙伴
提供WAF接入、高防CDN、高防IP、高防服务器、SSL证书一站式服务
让每一次解析都安全,让每一份数据都完整。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧