ESPHome web_server Plaintext Password Disclosure via JSON "value" Field
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| esphome | esphome | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Esphome | Esphome |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.275% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Description | 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. | 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. |
| Title | ESPHome web_server - Plaintext Password Disclosure via JSON "value" Field | ESPHome web_server Plaintext Password Disclosure via JSON "value" Field |
| Type | Values Removed | Values Added |
|---|---|---|
| Title | ESPHome web_server Plaintext Password Disclosure via JSON "value" Field | ESPHome web_server - Plaintext Password Disclosure via JSON "value" Field |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Esphome
Esphome esphome |
|
| Vendors & Products |
Esphome
Esphome esphome |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | 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. | |
| Title | ESPHome web_server Plaintext Password Disclosure via JSON "value" Field | |
| Weaknesses | CWE-522 | |
| References |
| |
| Metrics |
cvssV3_1
|