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