Read the docs

Apache Kafka skips JWT signature checks when no JWKS URL is set

Priority MEDIUM 40CWE-1287Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · High · None
Fix status
No fix listed

Attack profile from CVSS 3.1 · CISA ADP. Fix status from CNA. Impact type from CWE-345.

Summary

Apache Kafka from 4.1.0 through 4.1.2, from 4.2.0 through 4.2.1, and 4.3.0 is affected when SASL/OAUTHBEARER uses the default validator without a JWKS endpoint URL. The broker silently falls back to a validator that does not verify JWT signatures, so it starts without any warning (CWE-636). An unauthenticated remote attacker who can reach the listener can forge a token for any principal, including superusers, and gain full cluster access.

Written with Claude Haiku 5.5 from the sources below · 2026-11-05

Description from the CNA

A Kafka broker using SASL/OAUTHBEARER with the default validator (sasl.oauthbearer.jwt.validator.class=DefaultJwtValidator) selects its implementation from configuration. When sasl.oauthbearer.jwks.endpoint.url is set, the validator verifies the JWT signature. When that URL is unset (the default) and no verification key resolver is supplied, DefaultJwtValidator silently falls back to ClientJwtValidator, which does not verify the JWT signature, algorithm, or issuer - and the broker starts with no warning or error. This is the residual of CVE-2026-33557, whose fix restored signature verification only on the path where the JWKS endpoint URL is set. Impact: A broker in this state accepts any structurally valid JWT, including "alg":"none" tokens. An unauthenticated remote attacker who can reach the listener can forge a token asserting any principal - including configured superusers - and gain full access to the cluster. Only brokers that enable SASL/OAUTHBEARER validation without a JWKS endpoint URL (and without a custom verification key resolver) are affected; brokers that set the URL verify signatures and are not affected. Unlike CVE-2026-110952 (issuer/audience not enforced by default), here no signature is verified at all. Mitigation (all affected versions, no upgrade required): Set sasl.oauthbearer.jwks.endpoint.url for every listener/mechanism that uses OAuthBearerValidatorCallbackHandler, or configure a signature-verifying sasl.oauthbearer.jwt.validator.class. Resolution: From Apache Kafka 4.2.2, 4.3.1, and 4.4.0: a broker that would fall back to the non-verifying ClientJwtValidator fails to start with a ConfigException instead of running without signature verification (secure by default).

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00176 7th percentileScored 2026-11-07
Fix No fix listed No fixed version in the sources yet

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ApacheApache Kafka4.1.0 – 4.1.2; 4.2.0 – 4.2.1; 4.3.0—No fix listedCNA
  • Apache Kafka VendorApache Affected 4.1.0 – 4.1.2; 4.2.0 – 4.2.1; 4.3.0 Fixed in — No fix listed CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:apache:kafka:*:*:*:*:*:*:*:*——Apache
  • cpe:2.3:a:apache:kafka:*:*:*:*:*:*:*:* Versions — — ·Apache

Remediation

Apache Kafka 4.2.2, 4.3.1 and 4.4.0 fix it: a broker that would fall back to ClientJwtValidator now fails to start with a ConfigException. Setting sasl.oauthbearer.jwks.endpoint.url on every listener that uses OAuthBearerValidatorCallbackHandler is the listed mitigation for all affected versions and needs no upgrade. Alternatively, configure a signature-verifying sasl.oauthbearer.jwt.validator.class.

Written with Claude Haiku 5.5 from the sources below · 2026-11-05

Vendor assessments

Red Hat

Red Hat rating: Important. Red Hat's page for this CVE →

Not affected: 8 products
  • OpenShift Serverless
  • Red Hat Fuse 7
  • Red Hat build of Apache Camel 4 for Quarkus 3
  • Red Hat build of Apache Camel for Spring Boot 4
  • Red Hat build of Apicurio Registry 3
  • Red Hat build of Debezium 3
  • Red Hat build of Quarkus
  • streams for Apache Kafka 3

Timeline

  1. 2026-10-28 Threatist record created from CVE-2026-110985
  2. 2026-10-28 Alias added: GHSA-j27v-m9ww-p89m
  3. 2026-10-30 Affected versions changed · Red Hat
  4. 2026-10-30 CVSS score added · Red Hat
  5. 2026-11-05 CVSS score added · CISA ADP
  6. 2026-11-05 CISA SSVC decision points changed
  7. 2026-11-05 Priority changed: LOW → MEDIUM

References

  • TI-2025-18529 Apache Tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT KEVCVSS 3.1CRITICAL 10.0
  • TI-2024-30292 Apache OFBiz: Confused controller-view authorization logic (forced browsing) KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-26062 Apache OFBiz: Unauthenticated endpoint could allow execution of screen rendering code KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-21190 Apache OFBiz: Path traversal leading to RCE KEVCVSS 3.1CRITICAL 9.8
  • TI-2024-18186 Apache HugeGraph-Server: Command execution in gremlin KEVCVSS 3.1CRITICAL 9.8
  • TI-2023-25106 Deserialization of untrusted data in Apache ActiveMQ KEVCVSS 3.1CRITICAL 10.0
See all 4053 →

Sources