近期,Angular 框架中曝出一个高危安全漏洞(CVE-2025-66035),其根源在于HTTP Client模块对协议相对URL的处理存在逻辑缺陷,可能导致跨站请求伪造(CSRF)防护机制中的XSRF令牌泄露。本文将深入剖析其技术原理、影响范围,并提供修复建议。
漏洞概述
Angular框架的HTTP Client模块中存在一个高危安全漏洞(CVE-2025-66035),该漏洞源于对协议相对URL(protocol-relative URL)的不当处理,导致跨站请求伪造(CSRF)防护机制中的XSRF令牌可能被攻击者窃取。此漏洞影响Angular v19.2.16之前、v20.3.14之前和v21.0.1之前的所有版本。
技术原理
漏洞的核心在于Angular HTTP Client在处理协议相对URL(如 //example.com/api)时,未能正确限制XSRF令牌的发送范围。
当应用使用协议相对URL向外部域发起请求时,浏览器会继承当前页面的协议(HTTP或HTTPS)来解析该URL。攻击者可构造一个恶意页面,诱导用户访问。该页面通过协议相对URL向受害者的Angular应用发起请求,从而能够获取到Angular自动添加在请求头(通常是 X-XSRF-TOKEN)中的XSRF令牌。
Angular内置的CSRF防护机制通常是这样工作的:服务器在初始响应中设置一个包含XSRF令牌的Cookie,后续请求需要在自定义头部中回传该令牌。由于同源策略的限制,正常情况下外部域无法直接读取这些响应内容。然而,协议相对URL的特殊处理方式巧妙地绕过了这一层保护,使得攻击者控制的域能够间接获取到本应受保护的XSRF令牌,这暴露了HTTP协议和框架实现交互时的一个盲点。
漏洞影响
成功利用此漏洞的攻击者可以:
- 窃取受害者的XSRF令牌。
- 绕过Angular内置的CSRF防护机制。
- 以用户身份执行未授权的操作(如修改账户信息、发起交易等)。
- 可能导致账户接管或其他权限提升攻击。
修复方案
Angular团队已发布修复版本(v19.2.16、v20.3.14和v21.0.1)。这些版本修改了HTTP Client对协议相对URL的处理逻辑,确保XSRF令牌不会通过协议相对URL发送到外部域。开发者应立即将应用升级到对应的修复版本。
作为临时的缓解措施:在应用代码中避免使用协议相对URL,改为明确指定完整的 http:// 或 https:// 协议。
从技术实现角度看,修复方案很可能是在HTTP拦截器中增强了对请求URL的校验。当检测到目标地址为协议相对URL,且其解析后的域与当前应用不同源时,便自动排除发送XSRF令牌请求头。这种运维层面的防御策略既保持了向后兼容性,又有效地阻断了攻击路径。
|