Skip to main content

python-zeroconf CVE-2026-48045

| EUVDEUVD-2026-45251 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-06-11 https://github.com/python-zeroconf/python-zeroconf GHSA-9663-mqmp-p9mm PYSEC-2026-3435
6.5
CVSS 3.1 · Vendor: https://github.com/python-zeroconf/python-zeroconf
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain LAN-adjacent network access
  2. Delivery
    Craft byte-distinct TC-flagged mDNS query packets
  3. Exploit
    Spoof diverse source IPs on UDP/5353
  4. Execution
    Flood mDNS multicast address at high rate
  5. Persist
    Exhaust unbounded _deferred/_timers dictionaries with O(N) CPU drain
  6. Impact
    OOM-kill or stall zeroconf process

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must be on the same Layer-2 network segment as the target host, or able to inject UDP packets to the mDNS multicast addresses 224.0.0.251 (IPv4) or ff02::fb (IPv6) on port 5353. No authentication is required - mDNS is an unauthenticated protocol by design (CVSS PR:N confirmed). No non-default configuration is necessary: any host running python-zeroconf below 0.149.12 with an active mDNS listener is vulnerable in its default state. Source IP spoofing on UDP is trivial and amplifies the attack by multiplying distinct addr keys in _deferred and _timers. Exploitation is limited by the adjacent-network attack vector (AV:A) - the attacker cannot reach the target from the public internet without first obtaining LAN presence or the ability to route/tunnel multicast traffic. Impact is strictly availability (OOM-kill or event-loop starvation); there is no confidentiality or integrity exposure.

Impact

The CVSS 3.1 vector AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (score 6.5) accurately characterizes this vulnerability. The adjacent-network attack vector is the primary exploitability constraint - an attacker must be on the same Layer-2 segment or able to inject UDP traffic into the mDNS multicast domain, which is a meaningful barrier compared to internet-facing vulnerabilities. However, the CVSS vector does not capture the spoofing amplification: since UDP/5353 carries no source authentication, a single LAN-adjacent attacker can trivially generate hundreds of distinct source IPs, multiplying the _deferred/_timers table size far beyond what a single legitimate address would cause. Availability impact is rated High and is realistic - the advisory explicitly names OOM-kill on memory-constrained hardware as the primary outcome. No EPSS data was provided in the input, and this CVE is not listed in the CISA KEV catalog, indicating no confirmed active exploitation at time of analysis. Given that mDNS is enabled by default on all deployments, that no special configuration is required to be vulnerable, and that Home Assistant on Raspberry Pi is a widely deployed target class, the real-world risk for IoT and home-automation environments is elevated relative to the moderate CVSS score. The confidentiality and integrity impact are confirmed nil - this is a pure availability attack with no data exfiltration path.

Exploit ScenarioDerived

An attacker on the same LAN segment uses a packet-crafting tool to emit a high-rate stream of TC-flagged mDNS query packets addressed to 224.0.0.251:5353, each with a distinct byte payload and spoofed source IP from a rotating pool. Each spoofed source creates a new _deferred and _timers entry retaining up to ~9 KB of state; as the dictionary grows, the O(N) per-arrival dedup scan increasingly monopolizes the asyncio event loop. On a Raspberry Pi 4 running Home Assistant with python-zeroconf below 0.149.12, sustained flood traffic (achievable from a single LAN-connected laptop) causes the Python process to be OOM-killed by the kernel within seconds to minutes; no public exploit code exists for this CVE at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 11, 2026

Memory exhaustion and CPU starvation in python-zeroconf before 0.149.12 allows any unauthenticated LAN-adjacent host to OOM-kill or stall the zeroconf process by flooding TC-flagged mDNS queries over UDP/5353. The AsyncListener.handle_query_or_defer method retained all TC-bit packets in an unbounded _deferred[addr] dictionary - each entry up to 8,966 bytes of raw buffer plus parsed DNS state - with no cap on per-address queue depth or total distinct source addresses, and the per-arrival dedup scan ran O(N) causing quadratic CPU growth as queues expanded. Trivially spoofed source IPs multiply the memory footprint across _deferred/_timers; on Raspberry Pi-class hardware running Home Assistant, sustained flood traffic causes OOM termination; no public exploit identified at time of analysis.

RemediationAI

Upgrade the zeroconf package to version 0.149.12 or later using pip install "zeroconf>=0.149.12". This is the vendor-confirmed fix version per GHSA-9663-mqmp-p9mm and PR #1751 (commit b22c8ff19c66c68907d220a4823c0950f4fa93f7). The fix bounds the attack surface by capping per-address reassembly queues at 16 entries and total tracked source addresses at 512, with FIFO eviction to prevent address-rotation attacks. The vendor explicitly states there is no in-process workaround - upgrading is the only complete fix. If immediate upgrade is not possible, restrict UDP/5353 traffic to trusted Layer-2 segments using AP client isolation (prevents untrusted wireless clients from injecting mDNS), guest-network VLAN separation, or host firewall rules (e.g., iptables -A INPUT -p udp --dport 5353 -s <trusted_cidr> -j ACCEPT; iptables -A INPUT -p udp --dport 5353 -j DROP). Note that firewall-based mitigations do not protect against attackers already on the same trusted LAN segment, and AP client isolation trades off legitimate mDNS-based discovery (AirPlay, Chromecast, HomeKit) for attack surface reduction. Full advisory: https://github.com/python-zeroconf/python-zeroconf/security/advisories/GHSA-9663-mqmp-p9mm.

Affected VersionsENISA

python-zeroconf < 0.149.12

Affected Packages

pypi zeroconf fix: 0.149.12
euvd python_zeroconf fix: 0.149.12

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in pypi, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

mDNS (Multicast DNS, RFC 6762) operates over UDP port 5353 using multicast groups 224.0.0.251 (IPv4) and ff02::fb (IPv6) for zero-configuration LAN service discovery. RFC 6762 §18.5 specifies that receivers must defer processing of TC-bit (Truncation) queries and wait approximately 500 ms for a follow-up complete query before flushing the reassembled record. The python-zeroconf library (CPE: pkg:pip/zeroconf) implemented this reassembly in AsyncListener.handle_query_or_defer in src/zeroconf/_listener.py, accumulating each TC-flagged DNSIncoming object into self._deferred[addr] and scheduling a per-address flush timer in self._timers[addr]. CWE-400 (Uncontrolled Resource Consumption) is the root cause: neither the per-address list length nor the total count of distinct addr keys in _deferred was bounded. Each DNSIncoming object retains the full raw data buffer (up to _MAX_MSG_ABSOLUTE = 8966 bytes) alongside parsed record state, meaning memory consumption scales linearly with injected packets. Additionally, the deduplication scan (for incoming in reversed(deferred): if incoming.data == msg.data) was O(N) per arrival, producing quadratic CPU consumption as per-address queues grew. The fix in 0.149.12 introduced _MAX_DEFERRED_PER_ADDR = 16 and _MAX_DEFERRED_ADDRS = 512 constants with a FIFO eviction method _evict_oldest_deferred that prevents address-rotation attacks from permanently occupying slots.

Know when Python gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/python-zeroconf/python-zeroconf) PRIMARY 6.5 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Adjacent vector because exploitation requires LAN-local mDNS multicast access; PR:N because mDNS is unauthenticated by design; pure availability impact with no confidentiality or integrity exposure.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE MEDIUM
Red Hat 6.5 MEDIUM

Primary rating from Vendor (https://github.com/python-zeroconf/python-zeroconf).

CVSS VectorVendor: https://github.com/python-zeroconf/python-zeroconf

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

Impact

AsyncListener.handle_query_or_defer retained every truncated (TC-bit) incoming query in self._deferred[addr] and armed a per-addr timer in self._timers[addr] that flushed the reassembled query within ~500 ms (RFC 6762 §18.5). Neither the per-addr list nor the number of distinct addr keys was capped, and the dedup check (for incoming in reversed(deferred): if incoming.data == msg.data) ran O(N) over the per-addr list on every arrival.

Any unauthenticated host on the local link (UDP/5353, 224.0.0.251 / ff02::fb) can stream byte-distinct TC-flagged mDNS queries - each up to _MAX_MSG_ABSOLUTE = 8966 bytes, with DNSIncoming retaining the raw data buffer plus parsed-record state. Trivially spoofed source IPs multiply the effect across _deferred / _timers, and the O(N) data compare burns CPU quadratically as each per-addr queue grows. On memory-constrained deployments (Home Assistant on Raspberry-Pi-class hardware is the canonical victim) sustained traffic OOM-kills the process; under lighter load, the per-arrival scan and event-loop scheduler starvation break unrelated zeroconf consumers (discovery, registration, ServiceBrowser callbacks).

Patches

Fixed in zeroconf 0.149.12 (PR #1751). Upgrade to >= 0.149.12.

Workarounds

There is no in-process workaround; upgrading is the fix. Otherwise, restrict mDNS (UDP/5353) to trusted Layer-2 segments via AP client isolation, guest-network separation, or host firewall rules.

Resources

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on zeroconf (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.149.12.

Threat Intelligence Overview

EPSS Score
0.0%
Top 95% exploitable
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Vendor StatusVendor

SUSE

Severity: Moderate

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy