CVE-2026-59177: 
Python vulnerability analysis and mitigation

Overview

CVE-2026-59177 is an authentication bypass vulnerability in the ESPHome Device Builder Home Assistant add-on, caused by the trusted ingress dashboard site binding to all network interfaces (0.0.0.0) instead of only the supervisor's internal network. Because the add-on runs in host network mode for mDNS, this exposed the unauthenticated ingress dashboard directly on the host's LAN interface, allowing any device on the local network to access the full dashboard without credentials. The vulnerability affects esphome-device-builder (pip) versions prior to 1.0.10 and was present by default on every host-network HA add-on installation since the ingress site was introduced. It was disclosed on June 20, 2026, with the advisory published to the GitHub Advisory Database on September 9, 2026. It carries a CVSS v3.1 base score of 8.8 (High) (GitHub Advisory, ESPHome Advisory).

Technical details

The root cause is CWE-1327 (Binding to an Unrestricted IP Address): the trusted HA ingress site was configured to bind 0.0.0.0 (all interfaces) rather than restricting itself to the supervisor's internal Docker network addresses. The ESPHome add-on's security model relies on the Home Assistant supervisor to authenticate browser requests upstream before proxying them to the ingress site, which intentionally skips its own authentication. However, because the add-on uses host networking for mDNS, binding 0.0.0.0 also bound the host's physical LAN interface, making the no-auth dashboard reachable directly from the local network without passing through the supervisor's authentication proxy. The attack requires only network adjacency (LAN access) — no credentials, no user interaction, and no special configuration — making exploitation trivially simple for any device on the same network segment, including IoT devices, guest network clients, or compromised hosts (GitHub Advisory, Fix PR).

Impact

Any device on the same local network as the Home Assistant host could access the full ESPHome dashboard with no credentials, gaining capabilities documented as host-equivalent in ESPHome's threat model. This includes executing arbitrary Python code at compile time via external_components:, running arbitrary shell commands through compile and validation subprocesses, and reading or writing arbitrary files in the config and data directories — effectively achieving full compromise of the add-on. The Home Assistant config directory mounted by the add-on and all ESPHome-managed IoT devices are also at risk, enabling lateral movement to connected smart home infrastructure. The exposure was present by default on every host-network HA add-on installation with no operator misconfiguration required (ESPHome Advisory).

Exploitability

No public proof-of-concept exploit code has been identified, and there is no confirmed evidence of in-the-wild exploitation as of the advisory date. The vulnerability requires only adjacent network access (LAN), no credentials, and no user interaction, making it trivially exploitable by any attacker already on the local network. A Nuclei detection template was added to the ProjectDiscovery nuclei-templates repository (commit dc18055, released in v10.4.9), indicating the security community has developed automated detection capability. The CVE status remains "Reserved" and no CISA KEV listing or threat actor attribution has been identified (GitHub Advisory, Nuclei Templates).

Exploitation steps

  1. Reconnaissance: Identify Home Assistant hosts on the local network using network scanning tools (e.g., nmap) to discover hosts running the ESPHome add-on. Look for open ports corresponding to the ingress port (default 8099).
  2. Identify the ingress port: The ESPHome HA add-on advertises its ingress_port to the supervisor. Scan for port 8099 (or the configured ingress port) on the Home Assistant host's LAN IP address.
  3. Access the unauthenticated dashboard: Send a plain HTTP GET request directly to http://<ha-ip>:<ingress_port>/ from any device on the same LAN. On vulnerable versions (< 1.0.10), the dashboard loads with full authenticated capability and no credential prompt.
  4. Achieve code execution: Use the dashboard's ESPHome compilation features to inject arbitrary Python via external_components: in a device configuration, or leverage the compile/validation subprocesses to execute arbitrary shell commands on the host.
  5. Lateral movement: Read or write files in the Home Assistant config directory (mounted by the add-on) to access secrets, tokens, or configurations for further compromise of the smart home environment and connected ESPHome devices (ESPHome Advisory, Fix PR).

Indicators of compromise

  • Network: Unexpected HTTP requests to http://<ha-ip>:8099/ (or the configured ingress port) originating from LAN clients other than 127.0.0.1 or 172.30.32.2; unusual outbound connections from the Home Assistant host to unknown external IPs following dashboard access.
  • Logs: ESPHome device-builder logs showing HTTP requests to the ingress site from non-loopback, non-supervisor source IPs; after patching to 1.0.10+, log entries from ingress_peer_guard with message "Ingress peer guard rejected non-trusted source <IP>" indicating attempted exploitation.
  • File System: Unexpected new or modified files in the ESPHome config or data directories; unauthorized changes to Home Assistant configuration files (configuration.yaml, secrets.yaml, or token files).
  • Process: Unusual child processes spawned by the ESPHome device-builder process (e.g., bash, python, curl, wget) not associated with normal device compilation activity (ESPHome Advisory, Fix Commit).

Mitigation and workarounds

Upgrade esphome-device-builder to version 1.0.10 or newer, which binds the ingress site only to loopback (127.0.0.1) and the supervisor gateway (172.30.32.1) and adds an ingress_peer_guard middleware that returns HTTP 403 to any TCP peer other than loopback or the supervisor (172.30.32.2). The fix is delivered via the esphome container when it bundles device-builder 1.0.10+. For those unable to upgrade immediately, apply a host or router firewall rule restricting access to the ingress port (default 8099) to only the Home Assistant host and supervisor, and ensure the Home Assistant host is on a trusted, isolated LAN segment. Accessing the dashboard through Home Assistant's normal ingress URL remains unaffected and authenticated; the password-gated public port (6052) is also not affected (ESPHome Advisory, Fix PR).

Community reactions

The fix was authored and merged by bdraco (a core ESPHome contributor) on June 18, 2026, with the security advisory published on June 20, 2026. The PR review noted the fix as "defense in depth done right" for implementing two independent security layers (restricted bind address plus TCP peer guard) rather than relying on either alone. The vulnerability was discovered during an investigation into an unrelated authentication bug (issue #1560), highlighting the value of security-adjacent code review. A Nuclei detection template was subsequently added to the ProjectDiscovery community templates, indicating broader security community awareness (Fix PR, Nuclei Templates).

Additional resources


Source: This report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-59177HIGH8.8
  • Python logoPython
  • esphome-device-builder
NoYesOct 28, 2026
GHSA-hg64-r575-qhjjHIGH8.1
  • Python logoPython
  • music21
NoYesOct 28, 2026
GHSA-6r57-3vhv-2wpfHIGH7.5
  • Python logoPython
  • clawmetry
NoYesOct 28, 2026
GHSA-pc58-q9c8-wh7jHIGH7.1
  • Python logoPython
  • omero-web
NoYesOct 28, 2026
GHSA-xj2r-hpg6-375cMEDIUM5.3
  • Python logoPython
  • ckan
NoYesOct 28, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management