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