← 返回首页|安全博客

API Gateway尾斜杠致认证绕过获$12000

📅 2026-06-09

一、漏洞概述:一个斜杠就能绕过认证

2026年6月,安全研究员 Piyush Gupta 披露了一项影响 Amazon Web Services(AWS)HTTP API(API Gateway的一种更新且更经济的替代方案)的严重安全漏洞。研究人员发现,通过在 API 请求路径的末尾添加一个斜杠(/),可以完全绕过 Lambda 授权程序的身份验证,直接获取受保护的敏感数据。

具体来说,对 GET /v1/accounts 的正常请求会按预期返回 401 未授权错误;而同样的请求带上尾斜杠 GET /v1/accounts/ 却会返回 200 成功响应,并包含完整的账户数据。更令人担忧的是,同样的绕过方法同样适用于 POST /v1/transfers/ 请求——这意味着攻击者无需有效的 JWT 即可发起电汇转账操作。Gupta 因发现此漏洞获得了 12000 美元的漏洞赏金。

这一发现引发了安全社区的广泛关注。在 Reddit 和 Hacker News 上,安全专家们就此漏洞的本质展开了激烈讨论:这究竟是一个配置错误,还是一个平台设计缺陷?

二、技术原理:路径规范化不一致导致的认证绕过

该漏洞的根本原因在于 AWS HTTP API 的两个独立决策层——路由匹配层和授权层——之间的路径规范化机制不一致。

路由匹配层负责判断路径是否存在。HTTP API 默认采用贪婪路径匹配策略,/v1/accounts/ 会被匹配为以 /v1/accounts 为前缀的路由。而授权层负责判断请求是否被允许。这两层对"匹配"的定义存在分歧。当带尾斜杠的请求到达时,授权程序运行并返回了 Allow 状态码,但在后续的集成流程中,路径被重写,授权上下文被丢弃,最终导致攻击者在没有有效 JWT 的情况下进入了系统内部。

深入的技术分析揭示了一个更隐蔽的问题:授权程序会在经过身份验证的请求中设置 context.authorizer.userId 字段,后端 Lambda 通过读取该字段来控制数据访问范围。然而当路径末尾带有斜杠的请求到达集成点时,userId 字段被设为 undefined。后端并未单独验证该字段,而是信任授权程序已经做了妥当的设置。由于 userIdundefined,集成点默认使用系统账户,进而返回了所有数据——这是一次典型的"信任链断裂"安全事件。

这并非孤立的漏洞类型。2026 年 3 月披露的 CVE-2026-33186 涉及 gRPC-Go 中的几乎相同漏洞模式:当服务器接收到省略了强制性前导斜杠的请求时,路由成功匹配到正确的处理程序,但授权拦截器对原始的非规范化路径进行了评估,未能匹配到拒绝规则。两个案例的修复方案原则一致:在请求到达授权层之前,直接拒绝任何包含非规范化路径的请求。

三、影响范围与修复建议

该漏洞影响所有使用 AWS HTTP API 并搭配 Lambda 授权程序的团队和组织。AWS HTTP API 以其更低的成本和更简单的配置吸引了大量用户迁移,但此次事件揭示出这款产品的架构隐患。多位评论者指出,HTTP API 的开发工作早在多年前就已悄然暂停,基本架构存在问题,AWS 已停止对其投入新功能。

受影响的金融科技公司在漏洞报告后次日即完成了修复,主要措施包括:将 HTTP API 切换为 REST API(后者对路径匹配的要求更为严格);在每个 Lambda 函数中添加了 userId 验证,而非仅依赖授权程序作为唯一的守门人。

对于使用 AWS HTTP API + Lambda 授权程序的团队,建议立即采取以下措施:

青海视角与建议:青海省近年来积极推进"数字青海"建设,越来越多的政企单位将业务系统部署在公有云平台上。青海本地企事业单位在使用 AWS 或其他云平台的 API Gateway 服务时,应特别关注此类认证绕过漏洞。建议本地云运维团队立即自查是否存在使用 HTTP API + Lambda 授权程序的场景,并将此类安全验证纳入日常安全巡检清单。对于金融、政务等高安全等级系统,应采用"纵深防御"策略——不依赖单一认证层,而是在每一层都实施独立的安全验证。

© 2026 西宁惠康电子有限公司 | 青海·西宁