Skip to main content

ESPHome EUVDEUVD-2026-53345

| CVE-2026-71260 MEDIUM
Insufficiently Protected Credentials (CWE-522)
2026-08-05 TuranSec GHSA-qmjj-2rwx-5ffc
6.5
CVSS 3.1 · Vendor: TuranSec
View

Attack ChainAIDerived

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

  1. Access
    Gain adjacent network access
  2. Delivery
    Enumerate ESPHome devices on port 80
  3. Exploit
    Send GET /text/<entity_id> unauthenticated
  4. Execution
    Extract plaintext password from JSON 'value' field
  5. Impact
    Harvest 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

esphome 0 ≤2026.7.0

Affected Packages

euvd esphome no fix

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

Vendor (TuranSec) PRIMARY 6.5 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

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.

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

Primary rating from Vendor (TuranSec).

CVSS VectorVendor: TuranSec

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

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

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Medium
popular open-source IoT firmware, large home-automation and hobbyist user base
Data Quality
6 sources
Confidence: High

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.2%
Patch available No
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
None
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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