Angular团队披露了一项跨站脚本(XSS)漏洞,问题源于Angular模板编译器在处理特定SVG元素时,对安全上下文的判断存在偏差,导致框架内置的输入净化机制(Sanitization)在少数情况下可能被绕过。在满足特定条件时,攻击者可将恶意内容注入页面上下文,进而在受害者浏览器会话中执行任意JavaScript代码。官方已针对19、20、21分支发布修复版本,建议用户升级至19.2.18、20.3.16、21.0.7或21.1.0-rc.0以降低风险。
该漏洞编号为CVE-2026-22610,NVD页面指出,问题在于Angular内部的输入净化规则未将SVG的script元素的href与xlink:href属性识别为资源URL上下文,导致模板编译器在安全检查时未应用资源链接应有的更严格限制,从而在特定条件下可能被绕过。
GitHub安全公告将其评为高风险,并给出CVSS v4基础评分8.5。官方解释,当应用程序在模板中使用属性绑定,将用户可控制的数据赋值给SVG script元素的href或xlink:href时,编译器可能将其视为普通字符串或低风险网址,而未应用资源链接应有的限制。攻击者因此可能注入data:text/javascript等URI,或指向外部恶意脚本,最终使恶意代码在受害者浏览器端被解析并执行。
在影响范围方面,公告列出受影响的包包括@angular/compiler与@angular/core。已确认19、20、21三个主版本在特定区间内受影响,分别在19.2.18、20.3.16、21.0.7与21.1.0-rc.0版本起完成修复。对于18版本,GitHub安全公告将18.2.14及更早版本列为受影响范围,且该版本未提供修复补丁。
不过,这并不意味着所有使用Angular的网站都会立即面临同等风险。GitHub公告列出了攻击成立的前提:受害应用必须在模板中实际使用SVG的script元素,并对其href或xlink:href属性进行属性绑定或插值,且绑定的值必须来自不可信来源,例如URL参数、用户输入、数据库内容或未经妥善处理的API响应。也就是说,如果项目未使用相关SVG功能,或未将外部输入注入上述属性,实际暴露面可能相对有限,但仍建议进行版本盘点并按官方指引完成升级。
GitHub公告同时建议,在尚未完成升级前,应避免对SVG的script元素使用动态绑定。若业务需求必须动态传入数据,应在数据进入模板前实施严格的白名单验证,确保仅允许可信的URL来源,降低被恶意数据触发的风险。