ESPHome中的安全漏洞CVE-2025-57808
ESPHome是ESPHome开源的一个配置、管理智能硬件的系统,通过家庭自动化系统远程控制微控制器,用于控制Esp8266/Esp32硬件。
一、基本情况
Esphome是针对ESP8266和ESP32芯片设计的开源智能家居自动化系统,支持各种智能硬件连接家庭网络,并与主流智能家居平台集成。
栋科技漏洞库关注到ESPHome 2025.8.0版本存在一个安全漏洞,该漏洞现在已经被追踪为CVE-2025-57808,漏洞的CVSS 3.1评分8.1。
二、漏洞分析
CVE-2025-57漏洞存在于ESP-IDF平台的版本2025.8.0中,漏洞源于web_server身份验证检查不当,可能导致未经授权访问,现已被修复。
漏洞使ESP-IDF web_server的基本身份验证支持无效,允许从本地网络上的另一个设备绕过身份验证,而不知道所需正确用户名或密码。
具体来说,当客户端提供的base64编码的授权值为空或是正确值的子字符串时,ESPHome的web_server身份验证检查可能会被错误通过。
这意味着漏洞导致了允许攻击者在不知道有关正确用户名或密码的任何信息的情况下,可以访问web_server功能(包括OTA,如果启用)。
web_server_idf的AsyncWebServerRequest::authenticate中的HTTP基本身份验证检查仅比较base64编码的user:pass字符串如下字节:
auth.value().size()-auth_prefix_len。
这意味着当正确值更长时,客户端提供的值器(如dXNlcjpz(user:s))将通过检查,
例如dXNlcjpzb21lcmVhbGx5bG9uZ3Bhc3M=(user:somereallylongpass)。
此外,当提供的值为空字符串时,检查也将通过,这消除了知道(或暴力)用户名的需要。
浏览器通常不会发出这样的请求,但可以通过手动构造Authorizaztion请求头(例如,通过curl)轻松完成。
三、POC概念验证
按如下方式配置ESPHome:

在浏览器中,您可以通过提供用户名user和密码来正确登录。
但您也可以通过提供base64编码摘要与正确摘要前缀匹配的密码子字符串来错误登录。
您还可以使用curl等工具手动设置一个始终通过检查的授权请求标头,而不知道用户名:

四、影响范围
ESPHome <= 2025.8.0
五、修复建议
ESPHome >= 2025.8.1
六、参考链接
