SRC 挖洞:Apache APISIX 非规范路径授权绕过深度复盘,CVE-2026-94269 怎么绕过网关访问后端

作者 akihi(白帽攻防录讲师),某甲方网络安全工程师,合合 SRC 年度第一、腾讯 SRC 连续三年前十,单漏洞赏金 4w+,擅长 Web/App/PC 客户端漏洞挖掘。专注 API 安全、网关漏洞、微服务架构安全分析。本文基于公开 CVE 信息与技术原理深度复盘,供安全研究与防护参考。

一、漏洞时间线

2026 年 10 月,Apache 发布了 APISIX 的安全更新,修复了一个授权绕过漏洞 CVE-2026-94269。这个漏洞让攻击者能通过构造特殊编码的 URL 路径,绕过 API 网关的授权检查,直接访问受保护的后端服务。这是 API 网关安全领域的经典问题------当路由匹配和授权检查使用不同的路径规范化方式时,就会出现"路由匹配到宽松路由,但请求实际到达了受保护服务"的情况。

时间 事件 影响版本
2026-08-20 APISIX 3.18.0 发布(引入 %2F 保留选项) ------
2026-10-01 NVD 收录 CVE ------
2026-10-01 Apache 发布安全公告 APISIX 3.19.0
2026-10-02 安全社区公开技术分析 ------
2026-10-05 各大安全媒体报道 ------

这个漏洞最可怕的地方在于:它利用的是"非规范 URL 路径"------同一个路径,用不同的编码方式表示,网关和后端服务理解成了不同的东西。网关匹配到了一个不需要授权的宽松路由,但请求最终却到达了需要授权的受保护服务。在微服务架构中,API 网关是所有请求的入口------如果网关的授权检查被绕过,整个后端服务的安全防线就形同虚设。

二、攻击链全景

让我们先用一张流程图还原完整的攻击路径:

复制代码
攻击者发现 API 网关路由配置有重叠
        │
        ▼
第一步:环境探测
        │  攻击者做什么?
        │  - 发现目标用了 Apache APISIX
        │  - 分析路由配置
        │  - 发现宽松路由和保护路由有重叠
        │
        │  什么是路由重叠?
        │  - 比如有一个 /api/* 的宽松路由
        │  - 还有一个 /api/admin/* 的保护路由
        │  - 两个路由的路径有重叠
        │  - 如果配置不好就会出问题
        ▼
第二步:理解路径规范化差异
        │  关键问题在哪里?
        │  - 网关路由匹配用一种路径规范化
        │  - 后端服务用另一种路径规范化
        │  - 同一个 URL 用不同编码
        │  - 网关和后端理解成不同路径
        │
        │  举个例子:
        │  - 请求 /api/admin/data
        │  - 编码成 /api%2fadmin/data
        │  - 网关可能理解成 /api(宽松路由)
        │  - 后端可能理解成 /api/admin/data(保护路由)
        ▼
第三步:构造恶意请求
        │  攻击者构造什么?
        │  - 用 URL 编码特殊字符
        │  - 让网关匹配宽松路由
        │  - 让后端服务理解成保护路由
        │
        │  怎么构造?
        │  - 用 %2f 代替 /
        │  - 用 %2e 代替 .
        │  - 用其他编码方式混淆路径
        │  - 让网关和后端理解不一致
        ▼
第四步:发送恶意请求
        │  攻击者发送请求:
        │  - 请求路径是编码后的混淆路径
        │  - 发给 API 网关
        │  - 网关路由匹配
        │
        │  网关怎么处理?
        │  - 网关用自己的规范化方式解析路径
        │  - 匹配到了宽松路由
        │  - 宽松路由不需要授权
        │  - 网关就放行了
        │  - 没有做授权检查
        ▼
第五步:请求到达受保护服务
        │  网关把请求转发给后端:
        │  - 后端服务收到请求
        │  - 后端用自己的规范化方式解析路径
        │  - 理解成了 /api/admin/data
        │  - 这是受保护的接口
        │
        │  问题在哪里?
        │  - 网关已经放行,没有检查授权
        │  - 后端服务以为网关已经检查过了
        │  - 后端就直接处理请求了
        │  - 攻击者就访问了受保护的接口
        ▼
攻击者绕过授权访问受保护服务
        │
        ├─ 访问需要授权的接口
        ├─ 读取受保护的数据
        ├─ 操作受保护的资源
        └─ 完全绕过网关的安全防线

**关键结论:**这个漏洞的本质是"路径规范化不一致"------API 网关路由匹配和后端服务路径解析使用了不同的规范化方式,导致同一个请求被理解成不同的路径。在 API 安全中,路径规范化是最容易出问题的地方:URL 编码、特殊字符、路径遍历,这些都是经典的绕过手法。理解 URL 路径规范化、API 网关路由匹配、微服务授权模型,是做 API 安全的核心基本功。

三、API 网关与路径规范化原理

3.1 什么是 Apache APISIX

Apache APISIX 是一个云原生 API 网关:

组件 功能
APISIX Gateway API 网关
路由匹配 根据 URL 路径匹配后端服务
授权插件 认证、鉴权、限流等
上游服务 后端微服务
控制面 管理路由和配置

3.2 什么是路径规范化

路径规范化是把 URL 路径转换成标准形式的过程:

复制代码
// 什么是路径规范化?

// URL 路径有很多种写法:
// - /api/user/info
// - /api/user/info/
// - /api//user/info
// - /api/./user/info
// - /api/user/../user/info
// - /api%2fuser/info
//
// 这些路径可能指向同一个资源
// 规范化就是把它们转换成标准形式
//
// 为什么会有问题?
// - 不同的系统可能用不同的规范化方式
// - 同一个路径在不同系统里可能理解成不同的东西
// - 这就是路径规范化不一致漏洞的根源
//
// 举个例子:
// - 路径 /api%2fuser/info
// - 网关可能把 %2f 当普通字符
//   理解成 /api%2fuser/info 一个路径段
// - 后端可能把 %2f 解码成 /
//   理解成 /api/user/info 两个路径段
// - 这就出问题了

3.3 什么是路由重叠

路由重叠是 API 网关配置中的常见问题:

复制代码
// 什么是路由重叠?

// 假设网关有两条路由:
//
// 路由 1(宽松):
// - 路径:/api/*
// - 不需要授权
// - 转发到公开服务
//
// 路由 2(保护):
// - 路径:/api/admin/*
// - 需要授权
// - 转发到管理后台
//
// 问题在哪里?
// - 两个路由的路径有重叠
// - /api/admin/* 也匹配 /api/*
// - 如果路由匹配顺序不对
// - 或者路径规范化有差异
// - 就会匹配到错误的路由
//
// 正常情况:
// - 请求 /api/admin/data
// - 应该匹配路由 2
// - 需要授权
//
// 漏洞情况:
// - 攻击者构造特殊编码的路径
// - 让网关匹配路由 1(宽松)
// - 但后端理解成 /api/admin/data
// - 就绕过了授权

四、漏洞深度分析

4.1 漏洞根因:非规范 URL 路径

根据 NVD 和 Apache 安全公告,漏洞的根本原因是非规范 URL 路径:

复制代码
// 有缺陷的逻辑(伪代码)

// API 网关处理请求:

// 1. 收到 HTTP 请求
// 2. 提取 URL 路径
// 3. 用自己的方式规范化路径
// 4. 匹配路由
// 5. 执行路由对应的插件(包括授权检查)
// 6. 把请求转发给后端

// 问题在哪里?
//
// 步骤 3 和步骤 6 之间:
// - 网关规范化后匹配路由
// - 转发时用原始路径或者另一种规范化
// - 后端服务用自己的方式规范化
// - 可能和网关的规范化不一致
//
// 结果是什么?
// - 网关匹配了路由 A(宽松,不需要授权)
// - 但后端理解成了路由 B(保护,需要授权)
// - 授权检查是在网关做的
// - 后端信任网关已经检查过了
// - 就直接处理请求了
// - 攻击者就绕过了授权

4.2 %2F 编码的特殊问题

这个漏洞和 %2F 编码特别相关:

复制代码
// 为什么 %2F 是关键?

// %2F 是 / 的 URL 编码:
// - 正常路径:/api/admin/data
// - 编码路径:/api%2fadmin/data
//
// 不同系统怎么处理?
//
// 有些系统:
// - 不把 %2f 解码成 /
// - 当成普通字符
// - /api%2fadmin/data 是一个路径段
//
// 有些系统:
// - 把 %2f 解码成 /
// - /api%2fadmin/data 变成 /api/admin/data
// - 是两个路径段
//
// 这就是问题所在:
// - 网关不把 %2f 当 /
//   /api%2fadmin/data 匹配 /api/* 宽松路由
// - 后端把 %2f 当 /
//   理解成 /api/admin/data 保护路由
// - 就绕过了授权
//
// APISIX 3.18.0 甚至加了一个选项:
// - 可以保留 %2F 不被解码
// - 用于参数化路由匹配
// - 但这也加剧了路径规范化不一致的问题

4.3 完整攻击链

从探测目标到完全访问受保护服务:

复制代码
// 完整攻击步骤

// 前置条件:
// - 目标用了有漏洞的 Apache APISIX
// - 配置了宽松路由和保护路由的重叠
// - 网关和后端的路径规范化不一致

// 第一步:信息收集
// - 分析目标 API 网关
// - 确认用了 APISIX
// - 分析路由结构
// - 找到宽松路由和保护路由的重叠点

// 第二步:测试路径规范化
// - 发送各种编码的路径
// - 看网关和后端的响应差异
// - 确认路径规范化不一致

// 第三步:构造恶意请求
// - 用 %2f 编码特殊路径
// - 让网关匹配宽松路由
// - 让后端理解成保护路由

// 第四步:发送恶意请求
// - 把构造好的请求发给网关
// - 网关匹配到宽松路由
// - 跳过授权检查
// - 转发给后端

// 第五步:访问受保护服务
// - 后端理解成保护路由
// - 处理请求
// - 攻击者获得受保护的数据

// 第六步:横向移动
// - 用窃取的凭证
// - 访问更多内部服务
// - 进一步渗透

4.4 影响范围

项目 详情
CVE 编号 CVE-2026-94269
漏洞类型 非规范 URL 路径授权绕过
影响产品 Apache APISIX
影响版本 2.14.1 - 3.18.0
利用条件 宽松路由和保护路由配置重叠
用户交互 不需要
漏洞根因 路径规范化不一致
影响 未授权访问受保护后端服务
修复版本 APISIX 3.19.0

五、修复方案分析

Apache 在 2026 年 10 月修复了这个问题:

修复项 修复方式
路径规范化统一 路由匹配和转发用统一的规范化
%2F 处理 正确处理编码的路径分隔符
路由匹配顺序 更精确的路由匹配
授权检查加强 授权检查基于最终路径

5.1 API 网关安全设计原则

复制代码
// API 网关安全设计原则

// 1. 路径规范化统一
//    路由匹配和后端转发用同样的规范化方式
//    不要出现理解不一致

// 2. 授权检查前置
//    授权检查要在网关做
//    基于最终要访问的路径做检查

// 3. 路由配置审查
//    检查路由配置有没有重叠
//    避免宽松路由覆盖保护路由

// 4. 最小权限
//    路由配置遵循最小权限
//    不要用太宽泛的路由

// 5. 安全测试
//    定期测试路径绕过
//    检查各种编码方式

5.2 API 网关安全检查清单

复制代码
// API 网关安全检查清单

// 1. 路由配置
//    检查路由有没有重叠
//    宽松路由会不会覆盖保护路由

// 2. 路径规范化
//    检查网关和后端的规范化方式
//    有没有不一致的地方

// 3. 授权检查
//    确认授权检查基于正确的路径
//    不是基于错误的路由匹配

// 4. 编码处理
//    检查各种 URL 编码的处理
//    %2f、%2e、%00 等特殊字符

// 5. 及时更新
//    及时更新网关版本
//    修复已知漏洞

六、SRC 审计启示录

6.1 API 网关安全审计清单

在 SRC 挖洞过程中,针对 API 网关的审计清单:

# 检查项 检测方法
1 路由有没有重叠 分析路由配置,找宽松路由和保护路由
2 路径规范化有没有差异 测试各种编码路径的响应差异
3 授权检查能不能绕过 用编码路径尝试绕过授权
4 %2f 等特殊编码有没有问题 测试 %2f、%2e 等编码的处理
5 路径遍历能不能打 测试 ../ 等路径遍历

6.2 常见 API 网关漏洞类型

复制代码
// 常见的 API 网关漏洞

// 1. 路径规范化不一致
//    网关和后端理解成不同路径
//    绕过授权检查

// 2. 路由配置错误
//    宽松路由覆盖保护路由
//    未授权访问

// 3. 认证绕过
//    JWT、OAuth 等认证机制有缺陷
//    绕过身份验证

// 4. 限流绕过
//    限流规则有问题
//    绕过限流限制

// 5. 配置泄露
//    网关管理接口暴露
//    泄露配置信息

6.3 暴露面分级

暴露级别 情况 风险
严重 授权绕过 + 管理接口暴露 整个后端服务被控制
高 未授权访问敏感接口 敏感数据泄露
中 路径遍历访问有限制 部分数据泄露
低 信息泄露辅助攻击 降低攻击成本

七、防护建议

  1. 及时更新:升级到 Apache APISIX 3.19.0 或更高版本
  2. 路由审查:审查路由配置,避免宽松路由和保护路由重叠
  3. 路径规范化:确保网关和后端用统一的路径规范化方式
  4. 授权检查:授权检查要基于最终要访问的路径,不是错误的路由匹配
  5. 安全测试:定期测试路径绕过,检查各种编码方式
  6. 最小权限:路由配置遵循最小权限,不要用太宽泛的路由

八、总结

CVE-2026-94269 是 API 网关安全领域的经典问题------当路由匹配和授权检查使用不同的路径规范化方式时,授权绕过就成了必然。在微服务架构中,API 网关是所有请求的入口,也是安全防线的第一道。如果网关的授权检查被绕过,后面的所有服务都直接暴露在攻击者面前。在 API 安全领域,路径规范化是最容易出问题的地方------URL 编码、特殊字符、路径遍历,这些都是经典的绕过手法。在 SRC 挖洞实践中,API 网关是最常见的目标类型------一个授权绕过漏洞,往往能拿到最高等级的赏金。


相关推荐
学逆向的11 小时前
win32注入代码
开发语言·网络安全·api·win32
Knight_AL11 小时前
从 EasyExcel 到 Apache Fesod:Java Excel 处理生态的一次重构
java·apache·excel
Web Security Loop12 小时前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
墨云安全18 小时前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
刘婉晴21 小时前
【APP安全测试】Frida 基础
网络安全
科技象限1 天前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神
sbjdhjd1 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
sbjdhjd2 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
心易行者2 天前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache