Skip to content
Fencer Vulns
critical 9.1

CVE-2026-110985 json

Apache Kafka: Broker silently skips JWT signature verification for SASL/OAUTHBEARER when the JWKS endpoint URL is not configured

published 2026-10-28 11 d ago modified 2026-11-05 3 d ago also EUVD-2026-112207

cvss
9.1
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 7%
public exploits
0
none known

Summary

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

Patch / fix

  • apache kafka 4.2.2, 4.3.1
  • org.apache.kafka kafka 4.2.2, 4.3.1

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-110985 updated cvss 8.1

org.apache.kafka/kafka-clients: Apache Kafka: Authentication bypass via missing JWT signature verification

  • Red Hat OpenShift Serverless openshift-serverless-1/kn-ekb-receiver-rhel9, openshift-serverless-1/kn-ekb-dispatcher-rhel9 Red Hat build of Apache Camel 4 for Quarkus 3 kafka-clients 4.1.2.redhat-00001 Red Hat build of Apache Camel for Spring Boot 4 kafka-clients 4.1.2.redhat-00001 Red Hat build of Apicurio Registry 3 kafka-clients 4.1.2.redhat-00001 Red Hat build of Debezium 3 kafka-clients 4.1.2.redhat-00001 Red Hat build of Quarkus kafka-clients 4.1.2.redhat-00001
    +2 more products
    Red Hat Fuse 7 kafka-clients 4.1.2.redhat-00001 Red Hat streams for Apache Kafka 3 kafka-clients 4.1.2.redhat-00001
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
total
Assessed
3 d ago

Exploit prediction

0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CISA ADP 3.1 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CNA 3.1 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Affected products

  • Apache Software Foundation Apache Kafka

Classification

Weakness
  • CWE-345 Insufficient Verification of Data Authenticity
  • CWE-347 Improper Verification of Cryptographic Signature
  • CWE-1287 Improper Validation of Specified Type of Input
  • CWE-636 Not Failing Securely

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.

CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.