Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain validly-signed token from another issuer on shared JWKS
-
DeliveryConnect to broker SASL/OAUTHBEARER listener
-
ExploitBroker validates signature but skips issuer/audience check
-
ExecutionToken accepted and mapped to principal
-
ImpactAct on Kafka topics as higher-privileged principal
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Exploitation requires a broker using SASL/OAUTHBEARER with the bundled JWKS-backed validator where sasl.oauthbearer.expected.issuer and/or sasl.oauthbearer.expected.audience are left at their default (unset), AND a JWKS endpoint that serves signing keys for more than one issuer - a multi-tenant identity provider, an aggregated/shared JWKS, or shared signing keys. The attacker must be able to obtain a validly-signed token minted for a different issuer trusted by that JWKS, or a validly-signed token that omits the aud claim (a token that carries an aud claim is still rejected when no expected audience is configured). Limiting factors that reduce real-world risk: the JWT signature trust anchor is enforced in all cases, so unsigned/invalid tokens are not accepted; single-issuer deployments where the provider controls the iss claim and issues audience-scoped tokens have limited exposure; brokers that set both expected.issuer and expected.audience perform exact-match checks and are not affected (available since 3.1.0); and from Kafka 4.4.0 a JWKS-configured broker fails to start unless both are set or explicitly opted out. |
| Impact | No CVSS score or vector is provided in the input, so attack-vector/complexity/privilege signals must be inferred from the description rather than read from a vendor-assigned metric - treat the assessed vector below as analyst-derived, not authoritative. The vuln.today decision label is 'this_month' (prioritized but not act_now/emergency), and there is no CISA KEV listing, no EPSS probability, and no PoC or exploit reference in the data, so there is no public exploit identified at time of analysis and no evidence of active or widespread exploitation. The core mitigating factor is that this is a configuration- and deployment-dependent weakness (CWE-345): the signature trust anchor is always enforced, and the issuer/audience bypass is only reachable when sasl.oauthbearer.expected.issuer and/or sasl.oauthbearer.expected.audience are left at their documented default (unset) AND the JWKS endpoint serves signing keys for more than one issuer (multi-tenant IdP, aggregated/shared JWKS, or shared signing keys). In a single-issuer deployment where the provider controls the iss claim and issues audience-scoped tokens, exposure is limited. Therefore this reads as a genuine but conditional authentication-robustness issue rather than a broad high-risk emergency: high real impact where the multi-issuer precondition holds, low exposure otherwise. The optional-by-default design predates this CVE (documented LOW importance since KIP-768 / 3.1.0), which is likely why Apache treats it as a hardening/secure-default change rather than an urgent patch. |
| Exploit ScenarioDerived | In an environment where Kafka brokers authenticate clients via SASL/OAUTHBEARER against a shared or multi-tenant JWKS that signs tokens for several issuers, and the brokers have not set the expected issuer/audience, an attacker obtains a validly-signed token minted for a different issuer (or a token with no aud claim) and presents it to the broker, which accepts it and maps it to a principal - potentially a higher-privileged one. No public exploit code is identified at time of analysis; exploitation requires the attacker to already be able to obtain such a signed token from an issuer trusted by the same JWKS. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Apache Kafka brokers that authenticate clients via SASL/OAUTHBEARER using the bundled JWKS-backed validator can accept a validly-signed JWT that was minted by a different issuer, or that omits the aud claim, because the issuer check only runs when sasl.oauthbearer.expected.issuer is set and an audience claim is only required when sasl.oauthbearer.expected.audience is set - both default to unset. The practical exposure is concentrated in deployments whose JWKS endpoint publishes signing keys for more than one issuer (multi-tenant IdP, aggregated/shared JWKS, shared signing keys), where such a token may authenticate a client, potentially as a higher-privileged principal; single-issuer deployments that control the iss claim and issue audience-scoped tokens are far less exposed. The JWT signature trust anchor is still enforced in every case, no public exploit code has been identified at time of analysis, and the flaw is not listed in CISA KEV; an analyst-derived CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N places severity at the high end while acknowledging the configuration and token-availability preconditions.
RemediationAI
No upgrade is required to close the exposure: on every affected listener set sasl.oauthbearer.expected.issuer to the identity provider's exact iss value and sasl.oauthbearer.expected.audience to the audience or audiences your brokers expect, and apply the same settings per listener (both properties have been available since 3.1.0, and brokers that set them perform exact-match checks and are not affected). Upgrading to Apache Kafka 4.4.0 enforces this by default, since a broker configured with a JWKS endpoint will then fail to start unless both properties are set; deployments that deliberately do not restrict one or both axes must opt out explicitly with sasl.oauthbearer.allow.unverified.issuer=true and/or sasl.oauthbearer.allow.unverified.audience=true. Setting a wrong expected.audience value will reject legitimate tokens (including tokens that carry an aud claim but not the configured one), so validate the value against real client tokens before rollout; the opt-out flags re-open exactly the gap described here for the axis they cover. Where configuration cannot be changed immediately, narrowing the JWKS endpoint to a single issuer or removing shared signing keys from the fetched JWKS document removes the multi-issuer precondition. Confirm exposure details against https://kafka.apache.org/cve-list.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Kafka's SASL/OAUTHBEARER mechanism can delegate bearer-token validation to a JWKS-backed validator that fetches the identity provider's JSON Web Key Set over HTTPS and verifies the JWT signature against those keys. CWE-345 (Insufficient Verification of Data Authenticity) captures the gap: cryptographic integrity is checked, but claim-level binding to the intended relying party is optional. Since KIP-768 (Kafka 3.1.0) the settings sasl.oauthbearer.expected.issuer and sasl.oauthbearer.expected.audience have existed and were documented as optional with Importance LOW; when unset, the validator skips exact-match comparison of the iss claim and does not require an aud claim at all (a token that does carry an aud claim is nevertheless rejected if no expected audience is configured). The residual risk therefore hinges entirely on the trust-anchor scope: if the JWKS document exposes keys shared by several issuers or tenants, a correctly signed foreign-issuer token, or an audience-less token from a shared key, becomes an accepted credential. This is deliberately distinct from CVE-2026-33557, which concerns acceptance of unsigned/unvalidated tokens - here signatures are always validated. Differentiator facts for triage: brokers that set both properties perform exact-match checks and are unaffected; from Kafka 4.4.0 a broker configured with a JWKS endpoint refuses to start unless both properties are set, with per-axis opt-outs sasl.oauthbearer.allow.unverified.issuer=true and sasl.oauthbearer.allow.unverified.audience=true for intentional non-restriction.
Know when Apache Kafka gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
Network-facing SASL auth with no attacker privileges (PR:N), but AC:H because it needs a multi-issuer/shared JWKS deployment with the optional checks unset and an obtainable cross-issuer token; successful auth yields high confidentiality/integrity over Kafka data.
Primary rating from Vendor (apache).
Lifecycle Timeline
2DescriptionCVE.org
A Kafka broker that authenticates clients with SASL/OAUTHBEARER using the bundled JWKS-backed validator always verifies the JWT signature, but two further checks are only performed when explicitly configured:
- The issuer (iss) claim is verified only when sasl.oauthbearer.expected.issuer is set. When it is unset, a validly-signed token carrying the expected audience is accepted regardless of which issuer minted it.
- An audience (aud) claim is required only when sasl.oauthbearer.expected.audience is set. When it is unset, a validly-signed token that omits the aud claim is accepted. (A token that carries an aud claim is
still rejected when no expected audience is configured.)
Both options default to unset and have been documented as optional (Importance LOW) since KIP-768 (3.1.0).
Impact: The exposure is realizable mainly in deployments whose JWKS endpoint serves signing keys for more than one issuer (a multi-tenant identity provider, an aggregated/shared JWKS, or shared signing keys): a token minted for a different issuer, or a token lacking an audience, may be accepted to authenticate - potentially as a higher-privileged principal. In a single-issuer deployment where the provider controls the iss claim and issues audience-scoped tokens, exposure is limited. The signature trust anchor remains enforced in all cases. This is distinct from CVE-2026-33557 (acceptance of unsigned/unvalidated tokens); here the signature is validated and only the issuer/audience checks are not enforced by default.
Mitigation (all affected versions, no upgrade required): Set both sasl.oauthbearer.expected.issuer (to your provider's exact iss value) and sasl.oauthbearer.expected.audience (to the audience(s) your brokers expect), per listener. Brokers that set these perform exact-match issuer/audience checks and are not affected. Both have been available since 3.1.0.
Resolution:
- From Apache Kafka 4.4.0: a broker configured with a JWKS endpoint fails to start unless both sasl.oauthbearer.expected.issuer and sasl.oauthbearer.expected.audience are set (secure by default). Deployments that
intentionally do not restrict the issuer and/or audience may opt out per axis with sasl.oauthbearer.allow.unverified.issuer=true and/or sasl.oauthbearer.allow.unverified.audience=true.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Apache Kafka
View allApache Kafka 4.1.0 and 4.1.1 accept forged JWT tokens without signature validation, allowing remote unauthenticated atta
Apache Kafka's NetworkClient component logs entire request and response payloads at DEBUG level, exposing sensitive auth
Improper authorization in Apache Kafka 4.0.0-4.3.0 arises from a discrepancy between the documented ACL requirement and
Memory exhaustion in the Apache Kafka broker lets an authenticated principal holding Write permission on a topic submit
Apache Kafka brokers that have an authorizer enabled will read a file or environment variable from the broker host and r
Kafka Connect workers leak plaintext secrets through the REST API's /connector-plugins/{connector-type}/config/validate
Authentication bypass in Apache Kafka Connect's isolated admin REST API allows unauthenticated network attackers to read
Network-reachable, unauthenticated deserialization flaws in Apache Kafka’s clients library and Kafka Streams can force m
Kafka Streams can be stalled indefinitely by a single record whose timestamp is at or near Long.MAX_VALUE, causing an in
Unauthenticated remote attackers can exhaust broker heap and trigger process-wide GC stalls on Apache Kafka by declaring
Heap exhaustion in Apache Kafka allows remote attackers to crash brokers by sending requests that declare an array eleme
Apache Kafka brokers can be driven into heap exhaustion by any authenticated client because the PushTelemetry (KIP-714)
EUVD-2026-112209
GHSA-r6jr-f97r-9cc7
CVE.org
Exploit-DB