Skip to main content

Apache Kafka EUVDEUVD-2026-112209

| CVE-2026-110952 MEDIUM
Insufficient Verification of Data Authenticity (CWE-345)
2026-10-28 apache GHSA-r6jr-f97r-9cc7
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain validly-signed token from another issuer on shared JWKS
  2. Delivery
    Connect to broker SASL/OAUTHBEARER listener
  3. Exploit
    Broker validates signature but skips issuer/audience check
  4. Execution
    Token accepted and mapped to principal
  5. Impact
    Act 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Apache Kafka 3.1.0 <4.4.0

Affected Packages

euvd apache_kafka fix: 4.4.0

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

Vendor (apache) PRIMARY MEDIUM
vuln.today AI 7.4 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (apache).

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 17:19 EUVD
CVE Published
Oct 28, 2026 - 16:37 cve.org
MEDIUM

DescriptionCVE.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

Prevalence
High
Apache Kafka is widely-deployed enterprise streaming software across many organizations
Data Quality
1 sources
Confidence: Low

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-33557 CRITICAL
9.1 Apr 20

Apache Kafka 4.1.0 and 4.1.1 accept forged JWT tokens without signature validation, allowing remote unauthenticated atta

CVE-2026-33558 MEDIUM
5.3 Apr 20

Apache Kafka's NetworkClient component logs entire request and response payloads at DEBUG level, exposing sensitive auth

CVE-2026-41115 MEDIUM
4.3 Jun 02

Improper authorization in Apache Kafka 4.0.0-4.3.0 arises from a discrepancy between the documented ACL requirement and

CVE-2026-114349 HIGH
Oct 28

Memory exhaustion in the Apache Kafka broker lets an authenticated principal holding Write permission on a topic submit

CVE-2026-112375 HIGH
Oct 28

Apache Kafka brokers that have an authorizer enabled will read a file or environment variable from the broker host and r

CVE-2026-116593 MEDIUM
Oct 28

Kafka Connect workers leak plaintext secrets through the REST API's /connector-plugins/{connector-type}/config/validate

CVE-2026-115644 LOW
Oct 28

Authentication bypass in Apache Kafka Connect's isolated admin REST API allows unauthenticated network attackers to read

CVE-2026-111551 HIGH
Oct 28

Network-reachable, unauthenticated deserialization flaws in Apache Kafka’s clients library and Kafka Streams can force m

CVE-2026-111496 LOW
Oct 28

Kafka Streams can be stalled indefinitely by a single record whose timestamp is at or near Long.MAX_VALUE, causing an in

CVE-2026-111115 HIGH
Oct 28

Unauthenticated remote attackers can exhaust broker heap and trigger process-wide GC stalls on Apache Kafka by declaring

CVE-2026-111108 HIGH
Oct 28

Heap exhaustion in Apache Kafka allows remote attackers to crash brokers by sending requests that declare an array eleme

CVE-2026-111073 MEDIUM
Oct 28

Apache Kafka brokers can be driven into heap exhaustion by any authenticated client because the PushTelemetry (KIP-714)

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy