Angular 存在通过协议相对 URL 导致 XSRF 令牌泄露的漏洞
CVE-2025-66035 · GitHub 安全公告数据库
漏洞详情
包管理器: npm
受影响包: @angular/common (npm)
受影响版本:
-
= 21.0.0-next.0, < 21.0.1
-
= 20.0.0-next.0, < 20.3.14
- < 19.2.16
已修复版本:
- 21.0.1
- 20.3.14
- 19.2.16
漏洞描述
该漏洞是一个应用程序逻辑导致的凭证泄露漏洞,会导致跨站请求伪造(XSRF)令牌未经授权泄露给攻击者控制的域名。
Angular 的 HttpClient 有一个内置的 XSRF 保护机制,其工作原理是通过检查请求 URL 是否以协议(http:// 或 https://)开头来判断是否为跨域请求。如果 URL 以协议相对 URL(//)开头,它会被错误地视为同源请求,XSRF 令牌会自动添加到 X-XSRF-TOKEN 请求头中。
影响
令牌泄露会完全绕过 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。
参考链接
- GHSA-58c5-g7wp-6w37
- angular/angular 相关修复提交:0276479, 05fe668, 3240d85
- Angular 版本发布说明:
安全信息
严重性等级: 高 CVSS 总体评分: 7.7 / 10
CVSS v4 基础指标:
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-201: 在发送的数据中插入敏感信息 - 代码向另一个参与者传输数据,但部分数据包含了不该被该参与者访问的敏感信息。
- CWE-359: 将私人个人信息暴露给未授权参与者 - 产品未能正确防止个人的私人信息被未经明确授权访问该信息或未获得信息所属人默示同意的参与者访问。
CVE ID: CVE-2025-66035 GHSA ID: GHSA-58c5-g7wp-6w37
致谢:
- 发现者: AKiileX
- 修复开发者: alan-agius4
- 修复审查者: AndrewKushnir, irsl, hybrist