Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable and unauthenticated, but requires attacker to control or MITM the broker connection (AC:H); only availability is impacted via event-loop stall.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
6Blast Radius
ecosystem impact- 90 pypi packages depend on kafka-python (74 direct, 16 indirect)
Ecosystem-wide dependent count for version 2.3.2.
DescriptionCVE.org
kafka-python prior to 2.3.2 contains a denial-of-service vulnerability in SCRAM authentication handling that allows a malicious or machine-in-the-middle broker to freeze the client event loop by supplying an excessively large iteration count. In scram.py, ScramClient.process_server_first_message() passes the broker-controlled SCRAM iteration count directly to hashlib.pbkdf2_hmac() without validation, blocking producer sends, consumer polls, admin operations, and heartbeats, which can cause consumer group eviction and repeated reconnect failures.
Articles & Coverage 2
AnalysisAI
Denial of service in kafka-python versions prior to 2.3.2 allows a malicious or man-in-the-middle Kafka broker to freeze the client's event loop during SCRAM authentication by returning an excessive PBKDF2 iteration count. Because ScramClient.process_server_first_message() forwards the broker-supplied value directly to hashlib.pbkdf2_hmac() without bounds checking, producers, consumers, admin clients, and group heartbeats all stall, leading to consumer-group eviction and reconnect loops. No public exploit identified at time of analysis, though VulnCheck has published a vendor-style advisory and an upstream patch has been merged.
Technical ContextAI
kafka-python is a pure-Python Apache Kafka client library (cpe:2.3:a:dana_powers:kafka-python) used to build producers, consumers, and admin tooling against Kafka brokers. SCRAM (Salted Challenge Response Authentication Mechanism, RFC 5802) negotiates a session key by having the client run PBKDF2-HMAC over the password using a salt and iteration count advertised by the server in the server-first-message. The library implements that step in kafka/scram.py, where the iteration count parsed from the broker frame is trusted and passed straight into hashlib.pbkdf2_hmac(), a synchronous, CPU-bound C routine that scales linearly with the iteration count. This is a classic CWE-400 Uncontrolled Resource Consumption: an unvalidated external value drives an unbounded amount of work on a single thread, blocking the asyncio/selector loop that also drives I/O, fetch, heartbeat, and timer callbacks.
RemediationAI
Vendor-released patch: upgrade kafka-python to 2.3.2 or later, which adds an explicit upper bound on the broker-supplied SCRAM iteration count before invoking hashlib.pbkdf2_hmac() and also introduces a receive_message_max_bytes frame-size guard (commit 6e4831444f972d169cdd11f5c8d50333cea3f19b and PRs https://github.com/dpkp/kafka-python/pull/3019 and https://github.com/dpkp/kafka-python/pull/3026). Where an immediate upgrade is not possible, restrict clients to known-good brokers by pinning bootstrap_servers to internal addresses and enforcing SASL_SSL with hostname verification and a private CA so a rogue or MITM broker cannot present itself - the trade-off is operational, requiring strict certificate and DNS hygiene. As a defense-in-depth measure, run the SCRAM-authenticating client in a dedicated process or thread pool so a stalled PBKDF2 call cannot block unrelated event loops, accepting the added complexity and slight latency.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: ImportantShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-36128
GHSA-2jcm-hq8r-84wx