Angular HTTP客户端因协议相对URL导致XSRF令牌泄露漏洞深度解析

本文详细分析了Angular框架中一个高危安全漏洞(CVE-2025-66035),该漏洞允许攻击者通过协议相对URL泄露用户的XSRF令牌,从而完全绕过Angular内置的CSRF保护机制,可能导致严重的跨站请求伪造攻击。

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)攻击。

攻击前提条件

  1. 受害者的 Angular 应用程序必须启用了 XSRF 保护。
  2. 攻击者必须能够使应用程序向一个他们控制的协议相对 URL(例如 //attacker.com)发送状态更改的 HTTP 请求(例如 POST 请求)。

补丁

已发布以下版本的补丁:

  • 19.2.16
  • 20.3.14
  • 21.0.1

临时解决方案

开发者应避免在 HttpClient 请求中使用协议相对 URL(以 // 开头的 URL)。所有与后端通信的 URL 应硬编码为相对路径(以单个 / 开头)或完全限定的、可信的绝对 URL。

参考链接

安全信息

严重性等级: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
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计