CVE-2026-33397Angular 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头部,共享缓存可能会根据攻击者构造的请求缓存该重定向响应,导致其他访问正常路径的用户也遭受恶意重定向。