CVE-2022-25844

跨站脚本
影响
AngularJS
>=1.8
AngularJS
未找到项目。
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

复制步骤

版本大于 1.7.0 的 AngularJS 软件包易受此正则表达式拒绝服务 (ReDoS) 漏洞的攻击。如果应用程序将用户提供的值分配给 $locale.NUMBER_FORMATS.PATTERNS[1].posPre,攻击者可能会提供一个由极高数量的空格组成的值,从而导致拒绝服务,例如''.repeat(1000000)。StackBlitz上提供了演示此漏洞的概念验证

解决问题

此问题存在于 AngularJS 1.7.0 以上的所有版本中,目前还没有修复此问题的版本库。不过,开发人员可以检查是否为 $locale.NUMBER_FORMATS.PATTERNS[1].posPre 分配了用户提供的值,如果分配了,则检查值的长度是否限制为几个字符。

学习与预防

拒绝服务攻击旨在使用目标系统的资源,使系统的合法用户没有资源可用。该漏洞属于正则表达式拒绝服务(ReDoS)类型,它让目标系统尝试解决正则表达式模式匹配问题,而这需要很长时间。 

正则表达式引擎在尝试查找匹配时会执行一系列步骤。其中一些步骤可以很快完成,而另一些步骤,尤其是那些失败的步骤,则需要更长的时间。当给出的字符串值包含大量空格(如 1000000 个空格)时,浏览器可能会花费大量时间来返回结果。

当某些匹配步骤失败,正则表达式引擎必须后退以执行替代步骤时,情况尤其如此。在这种情况下,1 000 000 的空格数具有欺骗性:引擎尝试执行的实际步骤数可能是 1 000 000 的指数值,从而垄断了目标系统。

结论

尽管该漏洞没有修复方法,但HeroDevs Never-Ending Support for AngularJS的客户已在该漏洞公开时收到通知。如果您不是我们的客户,但对订阅感兴趣,请立即联系我们的销售团队。

资源

NIST 2022-25844条目

漏洞详情
身份证
CVE-2022-25844
受影响的项目
AngularJS
受影响的版本
>=1.8
出版日期
2022 年 5 月 1 日
≈ 固定日期
2022 年 4 月 1 日
固定在
严重性
中型
类别
跨站脚本