漏洞概述
CVE-2025-66035 是一个影响Angular框架的高严重性漏洞。该漏洞存在于Angular的HTTP客户端(HttpClient)中,属于一种逻辑缺陷导致的凭证泄露。当应用程序使用以双斜杠(//)开头的协议相对URL时,Angular会错误地将其识别为同源请求,从而将本应保密的跨站请求伪造(XSRF)令牌添加到请求头中,并发送到攻击者控制的域名,导致令牌泄露。
影响范围
该漏洞影响了以下版本的 @angular/common npm包:
- 版本 >= 21.0.0-next.0 且 < 21.0.1
- 版本 >= 20.0.0-next.0 且 < 20.3.14
- 版本 < 19.2.16
漏洞详情与影响
Angular的HttpClient内置了XSRF保护机制,其工作原理是通过检查请求URL是否以协议(http:// 或 https://)开头来判断请求是否为跨域请求。如果是跨域请求,则不会自动添加X-XSRF-TOKEN头。
然而,当请求URL以协议相对URL(//attacker.com)开头时,该机制存在缺陷,会将其误判为同源请求。因此,系统会将用户的XSRF令牌自动添加到请求的 X-XSRF-TOKEN 头部,并发送给攻击者控制的服务器。
攻击后果:
- 完全绕过CSRF保护:令牌泄露使得Angular内置的CSRF防护机制失效。
- 会话劫持:攻击者获取有效的XSRF令牌后,即可在受害者会话的上下文中发起任意跨站请求伪造(CSRF)攻击,执行非授权操作。
攻击前提条件:
- 受害者的Angular应用必须启用了XSRF保护。
- 攻击者能够诱使该应用向一个他们控制的协议相对URL(例如
//attacker.com)发起一个会改变状态的HTTP请求(例如POST请求)。
解决方案
已修复版本: 用户应立即升级到以下已修复的安全版本:
- 19.2.16
- 20.3.14
- 21.0.1
临时规避措施:
在无法立即升级的情况下,开发者应避免在HttpClient请求中使用协议相对URL(以//开头的URL)。所有与后端通信的URL应硬编码为相对路径(以单个/开头)或完全限定的、可信的绝对URL。
技术参考
- GitHub安全公告:GHSA-58c5-g7wp-6w37
- 相关修复提交:
angular/angular@0276479,angular/angular@05fe668,angular/angular@3240d85 - 版本发布说明:
安全评分与分类
- CVSS v4.0 总体评分:7.7(高危)
- CVSS向量:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N - 相关弱点(CWE):
- CWE-201:在发送的数据中插入敏感信息
- CWE-359:将私人个人信息暴露给未授权参与者