清华大学、泉城实验室、中关村实验室联合撰写的论文《ReqsMiner: Automated Discovery of CDN Forwarding Request Inconsistencies and DoS Attacks with Grammar – based Fuzzing》(链接:https://www.ndss – symposium.org/wp – content/uploads/2024 – 31 – paper.pdf)被全球知名网络安全会议四大顶会之一的 NDSS 收录。其中,云起无垠沈凯文博士也参与了该项模糊测试研究工作。
NDSS 在网络安全领域有着至关重要的地位,旨在推动该领域发展,促进全球学者和从业人员的知识交流,重点探讨解决网络安全和隐私保护领域的关键问题。它重视具有实际应用价值的研究成果,侧重于解决现实世界中的安全问题。由于 NDSS 有着严格的收录标准,所有论文都必须历经严谨的同行评审流程,正因如此,其收录率较低。而这一严格的评审机制有力地保证了研究成果的高质量与创新性。NDSS 的成果不仅在学术界影响广泛,还为企业和政府应对实际网络安全威胁提供了技术支持,此次该论文的收录足以证明此项研究的高质量和创新性。以下是论文的详细内容。
论文简介:本研究推出了名为 REQSMINER 的新型模糊测试框架,旨在揭示 CDN 转发请求过程中的不一致性及其潜在安全风险。该框架运用基于语法的模糊测试和强化学习技术,能生成有效测试用例,发现了 22 个主要 CDN 提供商中大量未知的转发请求不一致性,并找出三种新型的 HTTP 放大 DoS 攻击。通过对这些漏洞的揭示,研究提出了缓解建议,增强了 CDN 的安全性。
研究目的:CDN 在提升网站性能和安全性方面应用广泛,但其转发请求时的行为不一致性可能引发严重安全问题,如拒绝服务(DoS)攻击。然而,当前缺乏系统化研究这些不一致性的方法。本研究旨在通过自动化的模糊测试框架 REQSMINER,系统地发现和分析 CDN 转发请求中的不一致性,识别潜在安全漏洞并提供防御建议。
1. 新工具。研究者们推出了 REQSMINER,这是一种新颖的检测框架,旨在自动发现内容分发网络(CDN)转发请求不一致的情况。研究者们通过 GitHub 发布了 REQSMINER,以供其他研究人员未来进一步研究 CDN 转发请求不一致问题。
2. 新颖的模糊测试技术。研究者们将实际字段值纳入基于语法的模糊测试器中,并首次构建了一种基于上限置信区间(UCT-Rand)的黑盒模糊测试算法,以提高效率。
3. 全面的测试结果。研究者们使用 REQSMINER 对 22 家知名的 CDN 供应商进行了对照测试,发现了大量此前未被研究过的 CDN 转发请求不一致情况。此外,研究者们还识别出了三种新型的 HTTP 放大攻击,涉及 74 个新的拒绝服务(DoS)漏洞。
4. 披露与缓解措施。研究者们负责任地将所有安全问题报告给受影响的 CDN 供应商,并提出了缓解建议。
CDN 在提升网络内容性能和可用性方面应用广泛,但其转发请求的行为可能导致操作不一致,进而产生安全漏洞。以往研究多依赖手工分析,或仅关注某一类不一致性,缺乏系统性方法。本研究提出的 REQSMINER 框架,可自动检测和分析 CDN 转发请求不一致性,发现潜在安全风险。本研究的创新点在于利用强化学习优化模糊测试效率,即便反馈有限也能生成有效测试用例。此外,还揭示了三种新型 HTTP 放大攻击,并向受影响的 CDN 供应商通报漏洞,加强了 CDN 的安全防护。
CDN 通过在全球范围内部署边缘服务器来减少请求延迟、提升访问速度。然而,CDN 在将客户端请求转发至原始服务器时可能修改请求,导致转发不一致。例如,CDN 可能因缓存命中率或安全性原因修改请求,这种不一致性会引发缓存中毒攻击、拒绝服务(DoS)攻击等安全问题。因此,研究 CDN 转发不一致性及其安全影响对保障网络安全意义重大。
REQSMINER 是一款专门用于检测内容分发网络(CDN)请求转发过程中不一致性问题及其潜在安全风险的自动化模糊测试框架。它结合语法规则和强化学习技术,实现高效且系统的测试生成,有效挖掘和识别多种 CDN 请求转发不一致性。该框架主要由规则生成器和基于语法的模糊测试工具两个模块构成。规则生成器从 RFC 协议标准和实际网络流量中提取有效字段值,并将其融合到语法树中,提升生成请求的有效性;模糊测试工具采用基于 UCT – Rand 算法的请求生成器,即便缺乏充分反馈,也能通过随机加权选择生成大量有效测试请求。
在实验中,REQSMINER 对 22 家主流 CDN 进行全面测试,成功发现三类主要的不一致性问题,识别出三种新的 HTTP 放大攻击类型,共检测到 74 个新的拒绝服务(DoS)漏洞。这些发现有助于研究人员深入了解 CDN 的安全薄弱环节,也为 CDN 厂商提供了宝贵的安全改进建议。
在本研究中,通过部署REQSMINER框架,进行了一系列受控实验,以评估22个主流CDN服务在请求转发中的不一致性,并探索这些不一致性可能带来的安全风险。研究者将这些差异性分为三类:请求行的差异、头部字段的差异和消息体的差异,并对其进行分析,调查是否可以被攻击者利用,从而引发潜在的安全问题。
研究者在两台运行Ubuntu 20.04的Linux服务器上进行了实验,服务器分别作为客户端和源服务器。通过多线程模拟了大量的HTTP请求,REQSMINER自动生成的请求包括442条ABNF规则和63组字段值,确保了请求的多样性和覆盖性。实验过程中,研究者测试了Akamai、阿里云、Cloudflare、腾讯云等22个CDN提供商的转发行为,收集了大量的日志数据用于差异分析。
1)请求行的差异:在HTTP请求的请求方法、URL目标和版本方面,研究者发现部分CDN会修改这些字段。例如,11个CDN将HEAD请求转换为GET请求,这可能会导致带宽消耗不均,从而为DoS攻击提供可乘之机。另外,部分CDN会丢弃URL中的哈希部分或修改URL中的多个斜杠,可能会影响请求的准确性。
2)头部字段的差异:CDN处理重复头部时的差异尤为明显。大多数CDN会转发重复的头部,但有些会合并或改变字段值。例如,BunnyCDN将重复头部用分号分隔,这违反了RFC规范,可能导致源服务器无法正确解析,从而引发CPDoS攻击。不同CDN处理Host和Content-Length头部的方式也不同,某些CDN会丢弃重复的Host头,而其他则合并多个Host字段值,可能导致请求被错误转发。
3)消息体的差异:在请求的消息体方面,部分CDN会删除GET/HEAD请求中的消息体,这种处理方式可能导致源服务器返回错误的状态码,进而引发CPDoS攻击。此外,一些CDN对传输编码进行了修改,将所有分块数据合并后再转发,虽然这可以防止类似Slowloris的攻击,但也可能引发脉冲式的DoS攻击。
在评估REQSMINER的生成算法时,研究者采用了三种算法:随机算法、UCT算法和UCT-Rand算法。通过与Nginx作为CDN的实验,研究者发现UCT算法在有效性方面表现良好,但在探索ABNF语法树时存在局部优化问题,导致探索空间有限。相比之下,UCT-Rand算法通过加权随机性在有效性和探索性之间保持了较好的平衡,能够更全面地覆盖语法树节点,表现出更优的测试效果。
最终,研究者选择UCT-Rand作为本次实验的生成算法,并通过该算法成功识别了CDN转发请求中的多种不一致性,发现了新的DoS攻击风险,尤其是在请求方法和头部字段的处理上。这些发现不仅为CDN的安全加固提供了依据,也为进一步的安全防护措施提出了宝贵的启示。
HTTP 放大攻击(HTTP Amplification Attack)是一种拒绝服务(DoS)攻击方式。攻击者利用 CDN 和源服务器之间不一致的请求处理来大幅放大传输流量,使源服务器过载无法正常服务。在这种攻击模式下,攻击者只需通过 CDN 发送少量特制请求,就能迫使 CDN 向源服务器发起大量高流量请求,从而占用受害者的带宽资源。这种攻击的核心是利用 CDN 在转发请求时的流量放大机制,特别是在某些情况下,CDN 会将小型请求(如 HEAD 或条件请求)转换为带有完整响应体的 GET 请求,实现流量显著放大。
REQSMINER 在实验中识别出三种新的 HTTP 放大攻击:HEAD 请求放大攻击(HeadAmp)、条件请求放大攻击(CondAmp)以及 Accept – Encoding 放大攻击(AEAmp)。其中,HeadAmp 利用 CDN 将 HEAD 请求转化为 GET 请求,CondAmp 通过条件请求头字段被删除后导致的全量响应,AEAmp 利用 Accept – Encoding 字段引发的压缩差异放大流量。这些攻击的放大倍数通常可达 2000 倍,在某些极端条件下甚至可放大至 192 万倍。这些新型 HTTP 放大攻击让攻击者能以低成本实施大规模 DoS 攻击,同时也表明 CDN 在处理请求一致性方面存在显著漏洞,CDN 服务提供商需重视并尽快采取有效缓解措施。
本文通过 REQSMINER 框架对 CDN 转发请求不一致性进行系统化检测,揭示大量新的安全风险,并提出针对放大 DoS 攻击的防御策略。REQSMINER 展示了高效的模糊测试方法,可为未来 CDN 转发请求安全研究提供支持。研究团队已向相关 CDN 供应商披露发现的漏洞,并建议相应缓解措施,以提高 CDN 抵御恶意攻击的能力。