JavaScript Web应用程序和Web服务器容易受到称为正则表达式(regex)拒绝服务(ReDoS)的特定类型的漏洞/攻击。当攻击者将大量复杂的文本发送到基于JavaScript的Web服务器或应用程序的开放输入时,就会发生这些漏洞。
近340个站点易受ReDoS攻击
研究人员说这些缺陷的主要原因是缺乏对正则表达式匹配性能的关注,因为大多数开发人员似乎都专注于准确性,在代码中留下了大量漏洞,攻击者可以使用ReDoS攻击来利用这些漏洞。
研究人员设计了一种在实际网站上检测这些漏洞而无需实际使用ReDoS漏洞利用代码的方法。他们使用这种方法扫描2,846个流行的基于Node.js的站点,显示339个大约12%的站点容易受到至少一个ReDoS漏洞的攻击。
研究小组表示,
“ReDoS对这些网站的可用性构成严重威胁,我们的结果是开发用于检测和缓解JavaScript中ReDoS漏洞的技术的号召。”
ReDoS攻击在JavaScript下被放大
如果服务器组件或应用程序库不是专门设计用于处理各种边缘情况,则攻击者的输入最终会一次消耗整个应用程序或服务器几秒钟或几分钟,而服务器会分析并模式匹配输入。
各种编程语言和Web服务器技术在模式匹配操作和ReDoS攻击的性能方面也存在类似问题,但由于大多数JavaScript服务器的单线程执行模型,每个请求都由处理,因此它们在JavaScript的情况下被夸大了。同一个线程。
当ReDoS攻击命中时,最终会阻塞整个服务器,而不是减慢一个特定的操作。
自2012年以来已知ReDoS攻击,但势头正在增强
在JavaScript服务器的情况下,ReDoS攻击首先在2012年发表的一篇研究论文中详细介绍,但当时,JavaScript和Node.js,尤其不是他们今天在Web开发领域的庞然大物,因此,在过去的五年里,特别的问题基本上被忽略了。
2017年发布的后续研究显示,Node.js库和应用程序中发现的漏洞总数中有5%是ReDoS漏洞。
但根据上周在一次安全会议上提出的研究,ReDoS问题在JavaScript社区中正在获得动力,因为多年来一直未得到解决。
来自德国达姆施塔特技术大学的两名学者Cristian-Alexandru Staicu和Michael Pradel表示,他们在流行的Node.js模块中发现了25个以前未知的漏洞。
两人表示,攻击者可以使用这25个库中的任何一个来制作特殊的漏洞攻击包并攻击网站/服务器。
发送漏洞利用程序包导致任何易受攻击的网站在几秒到几分钟之间冻结,因为服务器试图将漏洞利用中包含的文本与正则表达式(正则表达式)模式匹配,以便决定如何处理输入。输入字段上的此类正则表达式过滤器很常见,因为它们是许多XSS过滤器的基础。
但是,虽然一次攻击很糟糕,但将重复的漏洞利用程序包发送到同一服务器可能会导致停机时间延长
针对一些ReDoS问题已发布POC
达姆施塔特工业大学的研究团队报告了各个模块开发人员的所有漏洞,其中一些人解决了这些问题。此GitHub存储库包含用于测试易受攻击库的概念验证漏洞,但也链接到受影响模块的相应修复程序。
除了JavaScript之外,Java还受到ReDoS攻击的影响。2017年,德克萨斯大学奥斯汀分校的研究人员创建了一个名为Rexploiter的工具,他们用它来查找从GitHub收集的150个Java程序中的41个ReDoS漏洞。
原文链接:https://www.bleepingcomputer.com/news/security/javascript-web-apps-and-servers-vulnerable-to-redos-attacks/