

漏洞概述
Angular 框架中被发现存在一个高危跨站脚本(XSS)漏洞,编号为 CVE-2026-32635(同 CWE-79)。该漏洞影响了 @angular/compiler 和 @angular/core 组件包。鉴于 Angular 在全球范围内被无数企业和消费者 Web 应用所采用,此漏洞无疑为潜在的威胁行为者提供了一个巨大的攻击面。
漏洞成因
该漏洞的根本原因在于 Angular 处理国际化(i18n)安全敏感 HTML 属性的方式存在缺陷。虽然 Angular 默认提供强大的内置净化机制来自动清理恶意输入,但当应用程序为敏感属性启用了国际化时,这一关键的安全保护措施会被意外绕过。
具体来说,如果在锚标签(<a>)中添加了 i18n-href 属性,框架就会指示对该属性值进行翻译处理。此时,若开发者同时将不受信任的用户生成数据绑定到这个已本地化的属性上,攻击者便有机会注入恶意脚本。i18n 绑定会无意中迫使框架跳过标准的输入安全检查。常见的易受攻击属性包括 href、src、action、formaction 和 data 等。
利用条件与危害
要成功利用这个漏洞,需要满足几个特定条件:
- 目标应用运行在存在漏洞的 Angular 版本上。
- 应用将未经过净化的用户输入绑定到了上述敏感属性。
- 该属性值同时使用了
i18n-<name> 语法进行了国际化标记。
一旦这些条件齐备,攻击者就能在受影响的应用中执行任意的 JavaScript 代码,从而导致严重的后果,例如:
- 会话劫持:窃取用户的会话 Cookie 和身份验证令牌。
- 数据泄露:静默地捕获敏感用户数据,并将其传输到外部的命令与控制(C2)服务器。
- 未授权操作:强制应用程序以受害者身份执行管理或破坏性操作。
受影响版本与修复方案
Angular 团队已经为多个主要的发布分支推出了安全更新,但值得注意的是,部分旧版本目前仍没有官方的补丁。具体受影响版本范围如下:
- 22.x 分支:22.0.0-next.0 至 22.0.0-next.3 以下版本(22.0.0-next.3 已修复)
- 21.x 分支:21.0.0-next.0 至 21.2.4 版本(21.2.4 已修复)
- 20.x 分支:20.0.0-next.0 至 20.3.18 版本(20.3.18 已修复)
- 19.x 分支:19.0.0-next.0 至 19.2.20 版本(19.2.20 已修复)
- 17.x / 18.x 分支:17.0.0-next.0 至 18.2.14 版本(暂无官方补丁)
最佳的防护方案是立即升级至 Angular 官方 GitHub 发布页面上列出的已修复版本。如果由于某些原因无法立即升级,开发团队必须严格遵守一项安全准则:确保绑定到上述易受攻击属性的数据,绝不能来自任何不受信任的源头,例如数据库查询结果、外部 API 响应或 URL 参数。
此外,开发者还可以通过 Angular 提供的 DomSanitizer 服务来手动强化应用的安全性。在将数据绑定到 DOM 之前,显式地调用净化方法,这样即使国际化绕过的机制被触发,也能有效消除脚本注入的威胁。对于处理复杂 前端框架 安全问题的开发者来说,理解并正确使用这些底层 API 至关重要。
参考来源:
Angular XSS Vulnerability Exposes Thousands of web Applications to XSS Attacks
https://cybersecuritynews.com/angular-xss-vulnerability-xss-attacks/
写在最后:
此类针对流行框架的 安全 漏洞提醒我们,即使在使用成熟技术栈时,对安全最佳实践的遵循也丝毫不能松懈。保持依赖项更新、进行安全代码审查,是开发流程中不可或缺的环节。更多关于 前端 开发与安全的深度讨论,欢迎在 云栈社区 与其他开发者交流。
|