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
Lifecycle Timeline
1DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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.
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.
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
Same weakness CWE-522 – Insufficiently Protected Credentials
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-53345
GHSA-qmjj-2rwx-5ffc