← 最新论文
💻 computer science

PUFFERDOS: Efficient and Effective Attack String Generation for Regular Expression Denial of Service Vulnerabilities

本文介绍了 PUFFERDOS,一种通过基于三种经形式化验证的漏洞模式合成输入,并利用组合式符号执行进行优化,以确保在现实长度预算内实现真实世界可利用性的新颖工具,从而生成实用且有效的 ReDoS 攻击字符串。

原作者: Shangzhi Xu, Ziqi Ding, Xiao Cheng, Yuekang Li, Nan Sun, Benjamin Turnbull, Shuangxiang Kan, Siqi Ma

发布于 2026-06-19
📖 1 分钟阅读☕ 轻松阅读

原作者: Shangzhi Xu, Ziqi Ding, Xiao Cheng, Yuekang Li, Nan Sun, Benjamin Turnbull, Shuangxiang Kan, Siqi Ma

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你面前有一名非常聪明但有点强迫症的保安,守在建筑物的门口。他的工作是检查你的身份证(输入内容)是否符合特定的模式(正则表达式,或称“regex”)。通常情况下,这很快且很容易。

但这里有一个陷阱。如果你给出一个非常特定、令人困惑的身份证,保安的大脑就会陷入循环。他会开始反复检查你的身份证可能匹配该模式的所有方式,直到耗尽体力并昏厥过去。这被称为 ReDoS 攻击(正则表达式拒绝服务攻击)。这就像是诱导计算器进行无限循环的数学运算,从而导致其死机。

长期以来,安全研究人员一直试图寻找这些陷阱,并创建“测试 ID”来证明这个保安是存在缺陷的。然而,旧的方法有两个大问题:

  1. ID 太长了: 它们需要极其庞大的输入(比如一本书长度的文本),以至于任何真实的网站都不会接受这样的输入。
  2. 它们不符合实际场景: 它们是在孤立地测试保安,忽略了在现实建筑中,会有其他保安(过滤器)在你的 ID 到达主门之前就将其拦截。

于是有了 PUFFERDOS。你可以把 PUFFERSDOS 想象成一位大师级的锁匠,他不只是在开锁,而是弄清楚了如何通过整个建筑到达那把锁,并使用最简短、最高效的钥匙。

以下是 PUFFERDOS 的工作原理,分为几个简单的步骤:

1. “停顿点”策略(让保安更辛苦地工作)

研究人员意识到,要让保安陷入瘫痪,你不仅需要一个令人困惑的模式,还需要一个让保安必须采取微小、低效步骤的模式。

  • 类比: 想象保安正在走廊里行走。如果你让他每走一英寸就停下来检查地面,他很快就会累;如果他每 10 英尺才停一次,他累得慢一些。
  • 解决方法: PUFFERDOS 创建了“钥匙”(攻击字符串),强制保安在每一个微小的英寸处停下。它通过精心选择特定的字符并进行排列,使得保安必须尽可能多次地进行回溯(返回并重新检查)。这使得攻击比之前的方法快了数千倍,因为它能用更短的钥匙实现同样的“冻结”效果。

2. 三种“陷阱”模式

团队发现大多数损坏的锁都属于三种特定的形状。PUFFERDOS 为每种形状都有特殊的配方:

  • 单循环陷阱(The One-Loop Trap): 一个可以有多种混淆解读方式的单一模式。PUFFERDOS 选择最短且最令人困惑的重复字符。
  • 双循环陷阱(The Two-Loop Trap): 两个相邻的模式都可以读取同一个字符。PUFFERDOS 使用一个两种模式都能读取的字符,迫使它们为了谁来处理该字符而发生争执。
  • 多循环陷阱(The Multi-Loop Trap): 一个长链模式。PUFFERDOS 构建一把钥匙,迫使保安逐一检查链条中的每一个环节。

3. “现实世界”的演练(符号执行/Concolic Execution)

这是最重要的部分。旧的工具只是在真空中测试锁。PUFFERDOS 则模拟了整个建筑。

  • 类比: 想象你有一把能打开门的钥匙,但这扇门位于一个安全检查站、一个接待处和一个迷宫之后。旧工具只展示了你的钥匙能开锁。而 PUFFERDOS 会带你走过整个迷宫,检查接待处是否让你通过,并确保你确实到达了那扇门。
  • 方法: 它使用了一种叫做“组合式符号执行(compositional concolic execution)”的技术。你可以把它理解为地图摘要。它不会每次都重新走完建筑里的每一步,而是为每个房间(函数)创建一个“小抄”。它会问:“如果我给这个房间一把令人困惑的钥匙,它是会将钥匙传递给下一个房间,还是会将其丢弃?”
  • 通过使用这些小抄,PUFFERDOS 可以快速判断一个短小、高效的钥匙是否真的能到达真实程序中的脆弱锁具,或者是否会在过程中的早期阶段就被过滤器拦截。

结果

团队在数千个真实程序和已知的安全漏洞(CVE)上测试了 PUFFERDOS。

  • 速度: 它生成的攻击字符串比之前的最佳工具效率高出 97 到 3,800 倍。它可以用极短的字符串让系统死机,而不是需要巨大的字符串。
  • 成功率: 它成功重现了 96.8% 的已知安全漏洞(相比之下,旧工具为 77.4%)。
  • 新发现: 当他们在 12 个流行的真实软件项目上进行测试时,发现了 59 个此前未知的安全漏洞。这些漏洞之所以被旧工具漏掉,是因为旧工具无法生成足够真实且足够短的攻击来证明漏洞的存在。

简而言之: PUFFERDOS 是一种更聪明、更实用的寻找并证明计算机系统会被混乱模式冻结的方法。它不仅找到了锁,还找到了最简短、最真实的钥匙来卡住它,从而证明了这种危险是真实存在的,并且需要被修复。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →