复制步骤
It’s possible in versions of Angular starting from 1.4.9 to conduct a Regular Expression Denial of Service (ReDoS) attack via the <input type="url"> element. If a malicious actor carefully composes an insecure regular expression that is used by the input[url] function, catastrophic backtracking and monopolization of system resources can occur. A proof of concept demonstrating this exploit is available on StackBlitz.
解决问题
AngularJS XLTS/NES 1.9.1 和 1.5.17 版本中提供了对该漏洞的修复;网站所有者应更新至这些版本。
学习与预防
ReDoS 攻击会让目标系统尝试解正则表达式模式匹配,这需要很长时间(从而拒绝为系统的合法用户提供服务)。这是一种拒绝服务 (DDoS) 攻击。
在攻击过程中,正则表达式引擎会执行一系列步骤,试图找到匹配项。其中一些步骤可以很快完成,而另一些步骤,尤其是那些失败的步骤,则需要更长的时间。在这种情况下,当浏览器尝试解析攻击者精心设计的正则表达式时,浏览器可能会花费大量时间返回结果,因为它会回溯尝试其他匹配。
结论
1.9.1 中已包含此漏洞中描述的修复,仍在使用 Angular 1.5 的 HeroDevs AngularJS 永不终止支持客户也可立即使用此修复。如果您希望获得 HeroDevs 永不终止的支持服务,请立即联系我们的销售团队。
资源
每当我们支持的开源软件修复了新的漏洞,我们就会发出警报。