中文

利用输入净化实现正则表达式拒绝服务攻击

密码学与安全 2023-03-06 v1 软件工程

摘要

Web 服务使用服务端输入净化来防范有害输入。一些 Web 服务发布其净化逻辑以提升客户端接口的可用性,例如允许客户端在本地调试无效请求。然而,这种可用性实践带来了安全风险。具体而言,服务可能会共享其用于净化输入字符串的正则表达式——而基于正则表达式的拒绝服务(ReDoS)是一种新兴威胁。尽管由 ReDoS 引起的知名服务中断引发了对此话题的兴趣,我们对于线上 Web 服务受 ReDoS 攻击的脆弱程度知之甚少。在本文中,我们开展了第一项黑盒研究,测量线上 Web 服务中 ReDoS 漏洞的普遍程度。我们应用一致性净化假设:客户端净化逻辑(包括正则表达式)与服务端净化逻辑一致。我们在一个服务的 HTML 表单或其 API 中识别其基于正则表达式的输入净化,在这些正则表达式中找出有漏洞的正则表达式,构造 ReDoS 探测,并精确定位漏洞。我们分析了 1,000 个服务的 HTML 表单与 475 个服务的 API。其中,355 个服务发布了正则表达式;17 个服务发布了不安全的正则表达式;6 个服务通过其 API 易受 ReDoS 攻击(6 个域名;15 个子域名)。Microsoft 与 Amazon Web Services 均因我们的披露修复了其 Web 服务。由于这些漏洞来自 API 规范而非 HTML 表单,我们为一个流行的 API 验证库提出了 ReDoS 防御方案,且我们的补丁已被合并。总结而言:在客户端可见的净化逻辑中,一些 Web 服务公然暴露了 ReDoS 漏洞。我们的结果促使短期补丁与长期根本性解决方案。

关键词

引用

@article{arxiv.2303.01996,
  title  = {Exploiting Input Sanitization for Regex Denial of Service},
  author = {Efe Barlas and Xin Du and James C. Davis},
  journal= {arXiv preprint arXiv:2303.01996},
  year   = {2023}
}

备注

Proceedings of the ACM/IEEE 44th International Conference on Software Engineering (ICSE) 2022