CVE-2026-94386: Camel OAuth: shared token cache leaks cross-profile tokens

MEDIUM
Published October 26, 2026
CISO Take

Apache Camel's camel-oauth component caches client-credentials tokens in a JVM-wide static cache keyed only on token endpoint and client ID, so two OAuth profiles that differ in scope or client secret can be handed each other's token. This matters for AI estates because the component fronts outbound calls from camel-openai, camel-langchain4j-agent, camel-huggingface, camel-spring-ai-chat and the watsonx connectors, so an agent or LLM call can run with broader authority than intended or reach a service the token was never issued for. Risk is moderate: CVSS is 4.8 (medium), EPSS is not available, the CVE is not in CISA KEV, no public exploit or Nuclei template exists, and exploitation needs a deployment with several profiles sharing one IdP client, so the real-world exposure is configuration-dependent. Upgrade to Camel 4.23.0 (or 4.22.2 on the 4.22.x stream); the 4.19.x–4.21.x lines are end of life and will not be fixed. Where you cannot upgrade yet, set camel.oauth.NAME.cache-tokens=false on every profile that shares a token endpoint and client ID, or register a separate IdP client per profile.

Sources:NVDApache Camel security advisory (camel.apache.org)ATLAS

What is the risk?

Medium (CVSS 3.1: 4.8, AV:N/AC:H/PR:N/UI:N, C:L/I:L). Weakness is CWE-524 (use of cache containing sensitive information). It is not attacker-triggerable by untrusted input: profiles are set by the trusted deployment. It manifests only when more than one profile shares a token endpoint and client ID but differs in scope or client secret, and caching is on by default. The impact is privilege confusion: a token minted for one profile's scope or secret is replayed under another profile's identity. The party that benefits is the downstream service receiving the wrong token; if that service is hostile or compromised, it can replay the token within its scope. No KEV listing, no public exploit, EPSS unavailable. Affected versions are 4.19.0 up to but not including 4.22.2, and the 4.19–4.21 lines will not be patched.

How does the attack unfold?

Initial Condition
A deployment defines multiple OAuth profiles sharing a token endpoint and client ID but differing in scope or client secret, with default token caching on.
Cache Poisoning by Normal Use
The first profile to resolve a token populates the JVM-wide static cache entry keyed only on endpoint and client ID.
AML.T0091.000
Cross-Profile Token Reuse
Another profile is handed the cached token with no request under its own scope or secret, so its outbound LLM or agent call carries the wrong authority.
AML.T0091.000
Impact
A service receiving the token gains access beyond intended scope and, if hostile or compromised, can replay it within that scope.

What systems are affected?

PackageEcosystemVulnerable RangePatched
org.apache.camel:camel-oauth——No patch

Do you use org.apache.camel:camel-oauth? You're affected.

How severe is it?

CVSS 3.1
4.8 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 28% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Moderate

What is the attack surface?

AVACPRUISCIA
AVNetwork
ACHigh
PRNone
UINone
SUnchanged
CLow
ILow
ANone

What should I do?

1 step
  1. 1) Upgrade org.apache.camel:camel-oauth to 4.23.0, or to 4.22.2 if you are on the 4.22.x stream. 2) Deployments on 4.19.x–4.21.x must move to a supported release because no fix will be backported. 3) Interim workaround: set camel.oauth.NAME.cache-tokens=false for each named profile, or camel.oauth.cache-tokens=false for the default profile, on any profile that shares a token endpoint and client ID with another; this costs a token request per resolution. 4) Alternatively, register a separate IdP client for each profile that needs a different scope or client secret, so no two such profiles share a client ID. 5) Detection: inventory Camel routes and configs for multiple camel.oauth.* profiles with the same token endpoint and client ID; review IdP logs for token requests that are missing for profiles expected to authenticate independently; check that downstream AI services see tokens whose audience and scope match the calling profile. 6) Rotate secrets or reduce token lifetimes where cross-profile exposure is suspected.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Art. 15-Accuracy, robustness and cybersecurity
ISO 42001
A.6.2.6-AI system operation and monitoring
NIST AI RMF
MANAGE 2.3-Mechanisms to respond to and manage identified AI risks
OWASP LLM Top 10
LLM06-Excessive Agency

Frequently Asked Questions

What is CVE-2026-94386?

Apache Camel's camel-oauth component caches client-credentials tokens in a JVM-wide static cache keyed only on token endpoint and client ID, so two OAuth profiles that differ in scope or client secret can be handed each other's token. This matters for AI estates because the component fronts outbound calls from camel-openai, camel-langchain4j-agent, camel-huggingface, camel-spring-ai-chat and the watsonx connectors, so an agent or LLM call can run with broader authority than intended or reach a service the token was never issued for. Risk is moderate: CVSS is 4.8 (medium), EPSS is not available, the CVE is not in CISA KEV, no public exploit or Nuclei template exists, and exploitation needs a deployment with several profiles sharing one IdP client, so the real-world exposure is configuration-dependent. Upgrade to Camel 4.23.0 (or 4.22.2 on the 4.22.x stream); the 4.19.x–4.21.x lines are end of life and will not be fixed. Where you cannot upgrade yet, set camel.oauth.NAME.cache-tokens=false on every profile that shares a token endpoint and client ID, or register a separate IdP client per profile.

Is CVE-2026-94386 actively exploited?

No confirmed active exploitation of CVE-2026-94386 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-94386?

1) Upgrade org.apache.camel:camel-oauth to 4.23.0, or to 4.22.2 if you are on the 4.22.x stream. 2) Deployments on 4.19.x–4.21.x must move to a supported release because no fix will be backported. 3) Interim workaround: set camel.oauth.NAME.cache-tokens=false for each named profile, or camel.oauth.cache-tokens=false for the default profile, on any profile that shares a token endpoint and client ID with another; this costs a token request per resolution. 4) Alternatively, register a separate IdP client for each profile that needs a different scope or client secret, so no two such profiles share a client ID. 5) Detection: inventory Camel routes and configs for multiple camel.oauth.* profiles with the same token endpoint and client ID; review IdP logs for token requests that are missing for profiles expected to authenticate independently; check that downstream AI services see tokens whose audience and scope match the calling profile. 6) Rotate secrets or reduce token lifetimes where cross-profile exposure is suspected.

What systems are affected by CVE-2026-94386?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, LLM API integrations, enterprise integration pipelines, multi-tenant AI gateways.

What is the CVSS score for CVE-2026-94386?

CVE-2026-94386 has a CVSS v3.1 base score of 4.8 (MEDIUM). The EPSS exploitation probability is 0.34%.

What is the AI security impact?

Affected AI Architectures

agent frameworksLLM API integrationsenterprise integration pipelinesmulti-tenant AI gateways

MITRE ATLAS Techniques

AML.T0055Unsecured Credentials
AML.T0091.000Application Access Token

Compliance Controls Affected

EU AI Act: Art. 15
ISO 42001: A.6.2.6
NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM06

What are the technical details?

Original Advisory

Use of Cache Containing Sensitive Information vulnerability in Apache Camel Oauth component. This issue affects Apache Camel: from 4.19.0 before 4.22.2. OAuthClientCredentialsTokenResolver obtains OAuth 2.0 bearer tokens through the client credentials grant on behalf of the components that authenticate their outbound calls with a named OAuth profile, such as camel-openai, camel-langchain4j-agent, camel-huggingface, camel-docling, camel-a2a, camel-spring-ai-chat and the IBM watsonx components, and of applications that call the OAuthClientAuthenticationFactory SPI directly. It kept the tokens it obtained in a static cache shared by every resolver instance and every CamelContext in the JVM, and keyed that cache on the token endpoint and the client ID only, although the token request also carries the client secret and the requested scope. Two profiles that share a token endpoint and a client ID but request different scopes, or authenticate with different client secrets, therefore mapped to the same cache entry: the profile that resolved a token first populated the entry, and the other profile was then handed that token, with no token request made under its own configuration, for as long as the token remained valid. Token caching is enabled by default, and pointing several profiles at one identity provider client is an ordinary use of the profile support rather than an opt-in to an insecure setting. The outcome is an outbound request that carries a token issued for another profile's scope, which can grant broader authority than the calling profile was configured for, or reach a service the token was not issued for; with identity providers that derive a token's audience from the requested scope, a different scope can mean a token for a different service altogether. A profile configured with a different client secret was likewise served the token obtained with the other secret, without authenticating with its own. The profiles are configured by the deployment, which is trusted, so no untrusted input reaches the cache: the party that gains is the service that receives a token it was not meant to receive, which, if hostile or compromised, can replay that token within its scope. Reaching the issue requires a deployment that defines more than one profile sharing a token endpoint and client ID while differing in scope or client secret. Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.2. The 4.19.x to 4.21.x release lines reached end of life before this issue was resolved and will not receive a fix, so deployments on them must move to a supported release. For deployments that cannot upgrade immediately, disable token caching on every OAuth profile that shares a token endpoint and client ID with another profile, by setting camel.oauth.NAME.cache-tokens=false for a named profile or camel.oauth.cache-tokens=false for the default one, so that each resolution requests a token with that profile’s own scope and client secret, at the cost of a token request on every resolution. Alternatively, register a separate client at the identity provider for each profile that needs a different scope or client secret, so that no two such profiles share a client ID.

Exploitation Scenario

An enterprise runs a Camel integration with two profiles on one IdP client: 'llm-readonly' (scope for inference only) and 'agent-admin' (broader scope for an agent tool backend), both using camel-langchain4j-agent and camel-openai routes. Whichever route resolves a token first populates the shared static cache entry. The other profile then receives that cached token without any request under its own scope or secret. If the read-only route resolves second, it sends a request with the admin-scoped token to a model gateway or third-party endpoint; a compromised or hostile endpoint can capture and replay the token within its scope. Alternatively, with an IdP that derives audience from scope, a route intended for one AI service ends up presenting a token meant for a different service. No attacker input is needed; the flaw is triggered by normal operation, and exploitation requires the attacker to control or compromise a receiving service.

Weaknesses (CWE)

CWE-524 — Use of Cache Containing Sensitive Information: The code uses a cache that contains sensitive information, but the cache can be read by an actor outside of the intended control sphere.

  • [Architecture and Design] Protect information stored in cache.
  • [Architecture and Design] Do not store unnecessarily sensitive information in the cache.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N

Timeline

Published
October 26, 2026
Last Modified
October 26, 2026
First Seen
October 26, 2026

Related Vulnerabilities