IPBUF安全漏洞报告
English
CVE-2026-33397 CVSS 6.1 中危

CVE-2026-33397 Angular SSR开放重定向漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33397
漏洞类型
开放重定向
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Angular SSR

相关标签

Open RedirectAngularSSRWeb Cache PoisoningBypass

漏洞概述

Angular SSR在处理代理传递的X-Forwarded-Prefix头部时存在开放重定向漏洞。由于对CVE-2026-27738的修复不完整,验证逻辑未能正确过滤单个反斜杠。攻击者可构造恶意请求,利用浏览器将/\解析为协议相对URL的特性,诱导用户重定向至攻击者控制的域名。此外,由于缺少Vary头部,该响应可能被中间缓存存储,导致Web缓存投毒。该漏洞影响20.x、21.x及22.x的特定版本。

技术细节

该漏洞源于Angular SSR对X-Forwarded-Prefix请求头的验证逻辑缺陷。尽管之前的修复阻止了多个前导斜杠(如///),但未考虑到单个反斜杠的绕过场景。当应用部署在代理服务器后时,若攻击者发送包含以反斜杠开头的X-Forwarded-Prefix头(例如\attacker.com),Angular SSR的内部验证未能将其标记为非法。随后,应用程序会在该值前添加前导斜杠,形成Location头部值:/\attacker.com。现代浏览器在解析时,会将/\序列视为//,从而导致协议相对URL跳转,将用户重定向至//attacker.com。由于响应中未包含Vary: X-Forwarded-Prefix头部,共享缓存可能会根据攻击者构造的请求缓存该重定向响应,导致其他访问正常路径的用户也遭受恶意重定向。

攻击链分析

STEP 1
步骤1
攻击者向目标Angular应用发送HTTP请求,并在请求头中注入恶意的X-Forwarded-Prefix值(前置反斜杠,如\evil.com)。
STEP 2
步骤2
Angular SSR服务接收到请求,内部验证逻辑未能识别单个反斜杠为非法字符,验证通过。
STEP 3
步骤3
应用程序在构建重定向路径时,在恶意值前添加前导斜杠,生成包含/\evil.com的Location响应头。
STEP 4
步骤4
由于缺少Vary: X-Forwarded-Prefix头,中间代理或CDN可能缓存该恶意响应。
STEP 5
步骤5
受害者的浏览器访问受影响URL时,解析缓存的/\序列为//,最终被重定向至攻击者控制的恶意网站。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
GET / HTTP/1.1 Host: victim.com X-Forwarded-Prefix: \evil.com # Explanation: # The server validates X-Forwarded-Prefix but misses the single backslash. # It prepends a forward slash, resulting in the Location header: /\evil.com # Browsers parse /\ as //, redirecting to //evil.com.

影响范围

Angular SSR 22.x < 22.0.0-next.2
Angular SSR 21.x < 21.2.3
Angular SSR 20.x < 20.3.21

防御指南

临时缓解措施
在应用补丁之前,开发者应在server.ts文件中,在Angular引擎处理请求之前,添加代码对X-Forwarded-Prefix头部进行严格校验和清洗(例如移除反斜杠),确保不包含可用于绕过的字符。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表