CVE-2021-4231

跨站脚本
影响
Angular
<=11.1.0
Angular
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

复制步骤

在多个版本的 Angular 库中发现了一个长期存在的漏洞,该漏洞被归类为问题/中等。CVE-2021-4231 是一个跨站脚本 (XSS) 漏洞,首次出现在版本 6 中,直到最近才被发现。

该问题与服务器端渲染(SSR)时如何解析代码注释有关。解析器可能会过早关闭注释(请参阅下面的重现步骤),从而暴露漏洞。一旦被利用,恶意脚本可能会被执行,从而可能导致未经授权访问敏感数据或接管用户会话。

尽管其他安全公告建议升级到 10.2.5 版和 11.0.5 版来解决这个问题,但漏洞也存在于 6、7、8 和 9 版中。

下面,在双引号之间添加了一个结束语标记:

'<!-- The way you close a comment is with "-->". -->'

但是,解析器无法区分"-->"是文本而不是真正的关闭注释标记。解析器会过早关闭注释,从而使代码面临潜在的 XSS 漏洞。其他注释关闭标记包括"-->"(带空格)和"--!>",这两种标记也会触发该漏洞。

解决问题

补丁为文本中的结束注释标记添加了不可视空格"-_-_>"(其中"_"为零宽度空格"\u200B"),这样解析器就不会将其识别为真正的结束注释标记。

该漏洞最初是由 Google 在 Angular v11 及更高版本中发现并修正的。 HeroDevs 的研究发现,该漏洞也会影响已退出 LTS 且不再接收安全更新的早期版本。 HeroDevs 的 Angular NES 客户已收到此安全补丁的通知,并收到了 Angular 6、7、8、9 和 10 的安全版本。 如果您尚未安装最新版本或需要帮助,请联系我们的支持团队寻求帮助。

其他 Angular 用户应立即更新,并考虑从 HeroDevs 获得针对未来漏洞的快速 Angular 安全支持。

学习与预防

CVE-2021-4231 具有启发性,因为它在被识别和纠正之前的许多版本中都没有被发现。一般来说,及时更新安全版本被认为是一种最佳做法。然而,在本案例中,由于这是一个长期存在的漏洞,因此仅仅做到这一点是不够的。具体来说,在这种情况下,同样重要的是迅速得到漏洞通知,并能快速更新生产代码。

结论

尽管旧版本的代码通常被认为是经过 "实战检验 "的,因此特别有价值,但仍有可能发现潜伏在旧版本老软件中的漏洞。HeroDevs 随时关注我们的 "永无止境支持 "产品中发现的所有漏洞,确保您在需要采取快速行动时能迅速得到通知。

如果您有兴趣获得 Angular 和支持库的安全性、合规性和兼容性支持,请立即联系我们

确保安全,并使用 HeroDevs 提供的最新补丁更新您的系统。如需了解更多见解和安全更新,请继续关注我们的博客。

资源

漏洞详情
身份证
CVE-2021-4231
受影响的项目
Angular
受影响的版本
<=11.1.0
≈ 固定日期
2024 年 2 月 1 日
固定在
严重性
中型
类别
跨站脚本