复制步骤
从Angular 1.3.0 版本开始,可以进行正则表达式拒绝服务(ReDoS)攻击。由于该软件包使用正则表达式来分割 ng-srcset 指令的值,如果恶意行为者精心编写了不安全的正则表达式,就会造成灾难性的回溯并垄断系统资源。StackBlitz 上提供了演示此漏洞的概念验证。
解决问题
AngularJS XLTS/NES 1.9.1 和 1.5.19 版本中提供了对该漏洞的修复;网站所有者应更新至这些版本。
学习与预防
ReDoS 攻击会让目标系统尝试解正则表达式模式匹配,这需要很长时间(从而拒绝为系统的合法用户提供服务)。这是一种拒绝服务 (DDoS) 攻击。
在攻击过程中,正则表达式引擎会执行一系列步骤,试图找到匹配项。其中一些步骤可以很快完成,而另一些步骤,尤其是那些失败的步骤,则需要更长的时间。在这种情况下,当浏览器尝试解析攻击者精心设计的正则表达式时,浏览器可能会花费大量时间返回结果,因为它会回溯尝试其他匹配。
结论
1.9.1 中已包含此漏洞中描述的修复,仍在使用 Angular 1.5 的 HeroDevs AngularJS 永不终止支持客户也可立即使用此修复。如果您希望获得 HeroDevs 永不终止的支持服务,请立即联系我们的销售团队。
资源
漏洞详情
身份证
CVE-2024-21490
受影响的项目
AngularJS
受影响的版本
>=1.3.0
出版日期
2024 年 2 月 10 日
≈ 固定日期
2023 年 8 月 1 日
严重性
高
类别
ReDoS 漏洞
注册提醒
每当我们支持的开源软件修复了新的漏洞,我们就会发出警报。