Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain adjacent network access
-
DeliveryEnumerate ESPHome devices on port 80
-
ExploitSend GET /text/<entity_id> unauthenticated
-
ExecutionExtract plaintext password from JSON 'value' field
-
ImpactHarvest WiFi/API credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
|
| Exploitation Conditions | Two configuration prerequisites must both be true: first, the ESPHome device must have the web_server: component explicitly declared in its YAML configuration (it is not enabled by default, but is commonly added for Home Assistant integration and local dashboards); second, at least one text entity in the configuration must use mode: password to store a sensitive secret. The CVSS vector confirms PR:N - no authentication is required against the web server, as ESPHome's web_server component ships with no access control by default. The primary factor limiting exploitation is the adjacent-network requirement (AV:A): the attacker must be on the same Layer-2 or directly routable network segment as the device, which rules out internet-based attackers unless port 80 is externally forwarded. Exploitation is NOT possible from the public internet under default home-router NAT configurations, but IS realistic from shared Wi-Fi, compromised IoT devices on the same network, or insider-adjacent positions. |
| Impact | The official CVSS 3.1 vector AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N (6.5) accurately characterizes the risk: high confidentiality impact with zero exploitation complexity, constrained only by the adjacent-network attack vector. The AV:A requirement is the single meaningful limiting factor - the attacker must share a network segment with the device, which is realistic in home Wi-Fi environments, shared IoT VLANs, guest networks, and scenarios involving rogue devices. No EPSS data was provided, so exploitation probability cannot be quantified statistically, but the technical difficulty is near-zero: a single unauthenticated GET request suffices, making any attacker with network adjacency a credible threat. No CISA KEV listing was identified, so active in-the-wild exploitation is not confirmed. The real-world priority is elevated relative to the moderate CVSS score because ESPHome devices are commonly configured to store sensitive secrets (Wi-Fi PSKs, Home Assistant API tokens) as password-mode text entities - the exact entities that are silently disclosed. The absence of a confirmed patched release version at time of analysis means no simple remediation path can be cited, increasing residual risk. |
| Exploit ScenarioDerived | An attacker connected to the same Wi-Fi network or LAN segment as an ESPHome device - for example, a guest network visitor or a compromised smart device on the same VLAN - sends an unauthenticated HTTP GET to http://<device-ip>/text/<entity_id> on port 80. The device responds with a JSON object where the 'state' field shows '****' but the 'value' field contains the full plaintext credential, immediately exposing stored Wi-Fi passwords or API tokens. No exploit tooling is required; curl or a browser suffices, and the /events EventSource stream also broadcasts the plaintext value continuously. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 05, 2026
ESPHome's built-in web server unconditionally leaks plaintext passwords stored in password-mode text entities to any unauthenticated attacker on the local network. The web_server component on port 80 - which carries no authentication by default - serializes text entities with a dual-field JSON structure where the 'state' field is correctly redacted to '****' but the 'value' field is always populated with the raw secret via set_json_icon_state_value()/set_json_value(), exposing WiFi credentials, API tokens, and similar secrets through a trivial GET request or the /events EventSource stream. No public exploit code or CISA KEV listing has been identified at time of analysis, but exploitation requires only standard HTTP tooling against any reachable device with the web_server component enabled.
RemediationAI
No vendor-released patched version has been confirmed at time of analysis; monitor the ESPHome GitHub repository (https://github.com/esphome/esphome) for a fix to WebServer::text_json_() in web_server.cpp that redacts the 'value' field for TEXT_MODE_PASSWORD entities. The most effective immediate compensating control is to remove the web_server: block from the ESPHome YAML configuration and reflash the device - this eliminates the attack surface entirely at the cost of losing the built-in web dashboard and REST/EventSource API. If the web server must remain active, apply a network-level firewall rule or VLAN policy blocking port 80 on ESPHome devices to all hosts except a trusted management workstation; note this does not protect against other devices already on the same subnet. As an additional precaution, avoid storing high-value credentials such as Wi-Fi PSKs or external API tokens as text entities with mode: password in ESPHome until a confirmed fix is available, and consider rotating any credentials already stored in this manner.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ESPHome is an open-source firmware framework targeting ESP8266/ESP32 microcontrollers, widely used in the Home Assistant ecosystem for custom IoT sensors and devices. Its web_server component exposes a REST API and an EventSource stream reflecting device entity state on port 80. The defect is in WebServer::text_json_() within esphome/components/web_server/web_server.cpp: when serializing a text entity marked TEXT_MODE_PASSWORD, the code produces two separate fields - 'state' is set to the redacted placeholder, but the unconditional call to set_json_icon_state_value()/set_json_value() writes the raw cleartext value into the 'value' field regardless of the mode flag. This is a textbook CWE-522 (Insufficiently Protected Credentials) instance: the developer added masking logic to one output path but failed to guard the parallel value-serialization path. The CPE cpe:2.3:a:esphome:esphome:*:*:*:*:*:*:*:* covers the full version range through the reported 2026.7.0-dev ceiling. The web server's default no-authentication posture means no additional bypass is required once network adjacency is achieved.
Know when Esphome 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
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Adjacent-network (AV:A) because device is LAN-bound; PR:N confirmed by default no-auth web_server; C:H for full plaintext credential exposure; no integrity or availability impact applies.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
DescriptionCVE.org
ESPHome through 2026.7.0-dev discloses plaintext passwords via its web_server component. In WebServer::text_json_() (esphome/components/web_server/web_server.cpp), a text entity configured with mode: password (TEXT_MODE_PASSWORD) has its JSON "state" field correctly masked as "****", but the same serialization path unconditionally writes the raw password into the JSON "value" field via set_json_icon_state_value()/set_json_value(). Because web_server listens on port 80 with no authentication by default, any attacker on the local network can retrieve the plaintext password (e.g. WiFi credentials, API tokens) via GET /text/<entity_id> or the /events EventSource stream.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
ESPHome is a system to control microcontrollers remotely through Home Automation systems. Rated high severity (CVSS 8.1)
ESPHome is a system to control your ESP8266/ESP32. Rated high severity (CVSS 8.8), this vulnerability is remotely exploi
ESPHome is a system to control your ESP8266/ESP32 for Home Automation systems. Rated high severity (CVSS 8.7), this vuln
Remote code execution in ESPHome through 2026.7.0-dev allows any attacker who can supply a crafted YAML configuration to
ESPHome versions 2025.9.0 through 2025.12.6 are vulnerable to a denial-of-service attack via integer overflow in the API
ESPHome is a system to control the ESP8266/ESP32. Rated high severity (CVSS 7.5), this vulnerability is remotely exploit
EUVD-2026-53345
GHSA-qmjj-2rwx-5ffc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB