JavaScript web 应用程序和服务器易受 ReDoS 攻击
翻译:360代码卫士团队
JavaScript web 应用程序和 web 服务器易受正则表达式拒绝服务 (ReDoS) 攻击的影响。
当攻击者向基于 JavaScript 的 web 服务器或应用程序的开放输入发送大量复杂的文本信息时,这些漏洞就会被触发。
如果服务器组件或应用程序库不是为处理多种边缘案例具体设计的,那么攻击者的输入会导致整个应用程序或服务器每隔几秒或几分钟而遭拦截,而服务器分析并对输入进行模式匹配。
多种程序语言和 web 服务器技术在模式匹配性能操作和 ReDoS 攻击上都存在类似问题,但在 JavaSecript 案例中被放大,因为在多数 JavaScript 服务器的单线程执行模式中,每个请求都通过相同的线程处理。
当 ReDoS 攻击发生时,会导致整个服务器被堵塞而非显示某个具体操作。
始于2012年,目前抬头
发生在 JavaScript 服务器中的 ReDoS 攻击首次出现在2012年发布的一篇研究论文中,但当时 JavaScript 和Node.js 并不像现在在 web 开发环境中那么强大,因此这个问题在5年之后仍然被严重忽视。
2017年发布的研究成果表明,在 Node.js 库和应用程序中存在的所有漏洞问题中,5%是 ReDoS 漏洞问题。
但在上周的一个安全会议上发布的研究成果表明,ReDoS 问题在 JavaScript 社区正在发展,因为这么多年问题都未得到解决。
德国达姆施塔特技术大学的两名学者 Cristian-Alexandru Staicu 和 Michael Pradel 表示,他们在流行的 Node.js 模块中发现了25个新漏洞。他们表示攻击者能构造特别的利用包并利用25个库中的任意库攻击网站或服务器。
发送利用包导致任意易受攻击的网站冻结数秒甚至数分钟的时间,原因是服务器试图将包含在利用中的文本匹配正则表达式模式,以便确定如何处理输入。这类针对输入字段的正则表达式过滤器很常见,因为它们是很多 XSS 过滤器的基础。
遭受一次攻击已经够糟糕了,但向同一台服务器重复发送利用包可导致宕机时间延长。
近340个站点易受影响
Staicu 和 Pradel表示这些漏洞存在的主要原因是正则表达式匹配的性能问题未得到关注,因为多数开发人员似乎仅关注准确性问题,导致攻击者能够利用 代码中的大型漏洞发动 ReDoS 攻击。
研究人员还进一步指出,能够在无需使用 ReDoS 利用代码的情况下利用一种方法检测这些漏洞问题。他们通过这种方法扫描了2846个基于 Node.js 的热门站点,并表示339个站点(约12%)易受至少一个 ReDoS 漏洞的攻击。他们呼吁检测并缓解 JavaScript 中的 ReDoS 漏洞问题。
某些 ReDoS 问题已修复
研究团队将所有漏洞问题告知各模块的开发人员,其中一些开发人员已解决了这些问题。用于测试易受攻击库的 PoC 利用代码以及相关模块的修复方案已发布在 GitHub 存储库中。
除了 JavaScript 之外,Java 也被指易受 ReDoS 攻击影响。2017年,德克萨斯大学奥斯汀分校的研究人员创建一款名为 Rexploiter 的工具,在从 GitHub 上的150个 Java程序中找到了1个 ReDoS 漏洞问题。
白皮书《冻结 Web:关于基于JavaScript Web 服务器中 ReDoS 漏洞的研究》详细说明了影响 JavaScript 的 ReDoS 漏洞问题。这份论文也发布于上周在美国举行的第27届 Usenix安全峰会上。
关联阅读
原文链接
https://www.bleepingcomputer.com/news/security/javascript-web-apps-and-servers-vulnerable-to-redos-attacks/
本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。