在广泛使用的开源身份验证工具 OAuth2-Proxy 中,近日发现一项严重漏洞,允许攻击者通过操纵查询参数绕过身份验证保护机制。该漏洞编号为 CVE-2025-54576,CVSS 评分高达 9.1,凸显其对受 OAuth2 保护的 Web 应用程序构成的重大安全威胁。
OAuth2-Proxy 通常用于保护 Web 应用程序安全,可作为反向代理或中间件组件,重定向用户请求至 OAuth2 或 OIDC 提供方进行身份验证,能够轻松集成至负载均衡器或 Kubernetes Ingress 控制器等现有基础设施中。
该工具为基于 OAuth2 / OIDC 的认证机制提供了一种简单且安全的实现方式,可灵活部署为独立的反向代理服务,或与现有反向代理、负载均衡架构集成。
此次安全漏洞出现在 skip_auth_routes
配置选项中。该选项允许开发人员使用正则表达式定义可绕过身份验证检查的 URL 路由。然而,OAuth2-Proxy 在实际执行匹配时错误地将正则表达式应用于整个请求 URI(包括路径和查询参数),而非仅限于 URL 路径部分,违背了其官方文档所述行为。
这一缺陷使得攻击者可通过构造特定的查询参数来触发正则匹配,即使基础路径本应受到身份验证保护,也可被绕过。
安全公告指出:“该问题源于 skip_auth_routes
匹配逻辑错误,其匹配对象为完整请求 URI(路径 + 查询参数),而非文档中所描述的仅限路径部分。”
攻击者可滥用该漏洞,利用过于宽泛的正则表达式规则构造特定 URL,实现身份验证绕过。例如:
配置示例:skip_auth_routes = [ "^/foo/.*/bar$" ]
原本预期行为:仅允许访问 /foo/something/bar
实际漏洞表现:也允许访问 /foo/critical_endpoint?param=/bar
此类攻击在后端服务会忽略或容忍异常查询参数的情况下尤其有效。
报告指出:“在使用包含通配符或广泛匹配模式的 skip_auth_routes
正则表达式配置中,部署系统所面临的风险最高”,尤其是在“后端服务对未知查询参数不加限制”的情况下。
该漏洞已在 OAuth2-Proxy v7.11.0 版本中得到修复,强烈建议受影响用户立即升级。
对于暂时无法升级的用户,安全公告提供了以下几项临时缓解措施:
-
审查正则表达式配置:全面审计
skip_auth_routes
配置中是否存在过于宽松的匹配规则; -
使用精确匹配路径:尽可能用精确路径替代通配符模式;
-
使用锚点限定规则范围:确保正则表达式正确使用起始符
^
和结束符$
,限制匹配范围; -
仅匹配路径部分:考虑实施自定义验证逻辑,在正则匹配前去除查询参数,仅对路径进行匹配。
安全配置示例:
# 替代使用 "^/public/.*"
# 建议使用更具体的路径匹配方式:
skip_auth_routes = [
"^/public/assets$",
"^/public/health$",
"^/api/status$"
]
发表评论
您还未登录,请先登录。
登录