CVE-2026-94386
Apache Camel:Camel-OAuth 通过密钥不足的 JVM 全局客户端凭据令牌缓存实现跨作用域令牌重用
- 已发布
- 2026年10月26日
- 已更新
- 2026年10月26日
- 分配 CNA
- apache
- 观察到的证据
- 2026年10月30日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N低 · 未来 30 天
- 百分位
- 28.0%
- 型号日期
- 2026年10月29日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
Apache Camel Oauth 组件中存在使用包含敏感信息的缓存漏洞。此问题影响 Apache Camel:从 4.19.0 到 4.22.2 之前的版本。OAuthClientCredentialsTokenResolver 代表那些使用命名 OAuth 配置文件对其出站调用进行身份验证的组件(例如 camel-openai、camel-langchain4j-agent、camel-huggingface、camel-docling、camel-a2a、camel-spring-ai-chat 以及 IBM watsonx 组件),以及直接调用 OAuthClientAuthenticationFactory SPI 的应用程序,通过客户端凭据授予方式获取 OAuth 2.0 持有者令牌。它将其获取的令牌保存在一个静态缓存中,该缓存由 JVM 中的每个解析器实例和每个 CamelContext 共享,并且仅以令牌端点和客户端 ID 作为该缓存的键,尽管令牌请求还携带客户端密钥和请求的作用域。因此,两个共享令牌端点和客户端 ID 但请求不同作用域、或使用不同客户端密钥进行身份验证的配置文件,会映射到同一个缓存条目:先解析令牌的配置文件填充了该条目,随后另一个配置文件就被交给该令牌,而不会在其自身配置下发出令牌请求,只要该令牌仍然有效。令牌缓存默认启用,而将多个配置文件指向同一个身份提供方客户端是配置文件支持的常规用法,而非选择启用不安全设置。其结果是出站请求携带了为另一个配置文件的作用域签发的令牌,这可能授予比调用配置文件所配置的更大的权限,或访问该令牌并非为其签发的服务;对于从请求的作用域派生令牌受众的身份提供方,不同的作用域可能意味着完全针对不同服务的令牌。同样,配置了不同客户端密钥的配置文件也会被提供使用另一密钥获取的令牌,而无需使用其自身密钥进行身份验证。配置文件由部署方配置,而部署方是受信任的,因此没有不受信任的输入到达缓存:获益方是接收到本不应接收的令牌的服务,如果该服务具有敌意或已被攻破,则可以在其作用域内重放该令牌。触发此问题需要部署方定义多个共享令牌端点和客户端 ID 但在作用域或客户端密钥上有所不同的配置文件。建议用户升级到 4.23.0 版本,该版本修复了此问题。如果用户处于 4.22.x 发布流,则建议升级到 4.22.2。4.19.x 至 4.21.x 发布线在此问题解决之前已达到生命周期终止,将不会获得修复,因此处于这些版本上的部署必须迁移到受支持的版本。对于无法立即升级的部署,请对每个与其他配置文件共享令牌端点和客户端 ID 的 OAuth 配置文件禁用令牌缓存,方法是为命名配置文件设置 camel.oauth.NAME.cache-tokens=false,或为默认配置文件设置 camel.oauth.cache-tokens=false,以便每次解析都使用该配置文件自身的作用域和客户端密钥请求令牌,代价是每次解析都要发出一次令牌请求。或者,在身份提供方处为每个需要不同作用域或客户端密钥的配置文件注册单独的客户端,以便没有两个此类配置文件共享客户端 ID。
来源
针对 CVE-2026-94386 的可运行 Spring Boot 与 Quarkus 复现程序,演示 Apache Camel camel-oauth 静态令牌缓存中的跨作用域 OAuth 令牌重用问题。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。