Apache Kafka accepts forged login tokens when OAuth JWKS URL is not set
Kafka brokers using OAuth-style logins can end up accepting login tokens without checking they are genuine. An attacker could then fake a token and gain full control of the cluster.
| Severity | HighVulnerability |
|---|---|
| Being exploited? | UnclearNo reports either way yet |
| Fix available? | YesApache Kafka 4.2.2, 4.3.1, and 4.4.0 (brokers that would fall back to the non-verifying validator now fail to start with a ConfigException). Mitigation on all affected versions: set sasl.oauthbearer.jwks.endpoint.url or configure a signature-verifying validator class. · since 28 Oct 2026 |
| How sure is this? | Official, 2 sourcesBacked by an official source |
How the attack works simplified
- 1Attacker forges tokenCrafts JWT with alg:none
- 2Connects to listenerReaches broker over the network
- 3Broker skips verificationNo JWKS URL, no signature check
- 4Impersonates superuserForged principal is accepted
- 5Full cluster accessAttacker controls the cluster
- ResultAttacker gains full cluster control
What happened
With SASL/OAUTHBEARER and the default validator, if sasl.oauthbearer.jwks.endpoint.url is unset, the broker falls back to ClientJwtValidator, which skips JWT signature, algorithm and issuer verification, and it starts silently. This is a residual of CVE-2026-33557.
Are you affected?
You are affected if your Kafka brokers use SASL/OAUTHBEARER with the default DefaultJwtValidator, do not set sasl.oauthbearer.jwks.endpoint.url, and do not use a custom verification key resolver.
Apache Kafka 4.1.0 through 4.1.2; 4.2.0 through 4.2.1; 4.3.0
What to do
- Set sasl.oauthbearer.jwks.endpoint.url for every listener using OAuthBearerValidatorCallbackHandler, or configure a signature-verifying sasl.oauthbearer.jwt.validator.class
- Upgrade Kafka to 4.2.2, 4.3.1, or 4.4.0 or later
- Verify brokers fail to start if the JWKS URL is missing, confirming the secure default is active
Timeline
- 28 Oct 2026, 17:17 UTCPublicly disclosed
- 28 Oct 2026, 17:27 UTCReported by oss-security · oss-security
- 28 Oct 2026, 17:32 UTCPicked up by Zero Radar
- 28 Oct 2026, 17:36 UTCNVD reported on it · NVD
Sources 2 reports, oldest first
Official vendor, government CERT or advisory database
- CVE-2026-110985NVD · 28 Oct 2026, 17:17 UTC
Security researchers research teams and mailing lists
- CVE-2026-110985: Apache Kafka: Broker silently skips JWT signature verification for SASL/OAUTHBEARER when the JWKS endpoint URL is not confioss-security · 28 Oct 2026, 17:27 UTC
Technical details
- ID
- CVE-2026-110985
- Disclosed
- 28 Oct 2026, 17:17 UTC
- On Zero Radar
- 28 Oct 2026, 17:32 UTC (14 min after disclosure)
- Last change
- 28 Oct 2026, 17:36 UTC
The plain-language parts and the attack diagram were written by an AI model (anthropic/claude-haiku-5.5) from the sources above. Facts like versions, exploitation and dates come from the sources themselves. How Zero Radar works