🇰🇷 한글 설명
SASL/OAUTHBEARER를 사용하는 Kafka 브로커가 sasl.oauthbearer.jwks.endpoint.url 미설정 시 기본 검증기(DefaultJwtValidator)가 JWT 서명 검증을 수행하지 않는 ClientJwtValidator로 조용히 대체됩니다. 이 상태에서 브로커는 경고 없이 시작되며, CVE-2026-33557의 잔여 취약점입니다.
💡 쉬운 설명
카프카 서버가 로그인 토큰의 위조 여부를 확인하지 않는 상태로 실행될 수 있습니다. 공격자가 관리자 권한을 가진 가짜 토큰으로 클러스터 전체를 장악할 수 있습니다.
🇺🇸 원문 (English)
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).
📍 영향받는 시스템
JWKS 엔드포인트 URL 없이 SASL/OAUTHBEARER 기본 검증기를 사용하는 Apache Kafka 브로커 (4.2.2, 4.3.1, 4.4.0 미만)
⚔️ 공격 벡터
서명 없는 alg:none JWT를 전송해 임의 주체(슈퍼유저 포함)로 인증하여 클러스터 전체 접근
🛡️ 대응 방법
모든 리스너에 sasl.oauthbearer.jwks.endpoint.url을 설정하거나 서명 검증 가능한 검증기를 지정하고, Apache Kafka 4.2.2 / 4.3.1 / 4.4.0 이상으로 업그레이드
🔧 검증 코드
결과에 jwks.endpoint.url 설정이 없고 OAUTHBEARER가 사용된다면 취약하며, 설정이 존재하면 서명 검증이 활성화된 상태입니다.
grep -rE 'sasl.oauthbearer.jwks.endpoint.url|sasl.oauthbearer.jwt.validator.class' /opt/kafka/config/ 2>/dev/null