<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 05 Oct 2026 16:39:25 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-57808 — ESP-IDF web_server basic auth bypass using empty or incomplete Authorization header</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-57808</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; esphome&lt;/p&gt;
&lt;p&gt;ESPHome is a system to control microcontrollers remotely through Home Automation systems. In version 2025.8.0 in the ESP-IDF platform, ESPHome&amp;#39;s web_server authentication check can pass incorrectly when the client-supplied base64-encoded Authorization value is empty or is a substring of the correct value. This allows access to web_server functionality (including OTA, if enabled) without knowing any information about the correct username or password. This issue has been patched in version 2025.8.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; esphome&lt;/p&gt;
&lt;p&gt;ESPHome is a system to control microcontrollers remotely through Home Automation systems. In version 2025.8.0 in the ESP-IDF platform, ESPHome&amp;#39;s web_server authentication check can pass incorrectly when the client-supplied base64-encoded Authorization value is empty or is a substring of the correct value. This allows access to web_server functionality (including OTA, if enabled) without knowing any information about the correct username or password. This issue has been patched in version 2025.8.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-57808</guid>
    </item>
    <item>
      <title>GHSA-mxh2-ccgj-8635 — ESP-IDF web_server basic auth bypass using empty or incomplete Authorization header</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-mxh2-ccgj-8635</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: esphome&lt;/p&gt;
&lt;p&gt;### Summary
On the ESP-IDF platform, ESPHome&amp;#39;s [`web_server` authentication](https://esphome.io/components/web_server.html#configuration-variables) check can pass incorrectly when the client-supplied base64-encoded `Authorization` value is empty or is a substring of the correct value (e.g., correct username with partial password). This allows access to `web_server` functionality (including OTA, if enabled) without knowing any information about the correct username or password.&lt;/p&gt;
&lt;p&gt;### Details
The HTTP basic auth check in `web_server_idf`&amp;#39;s [`AsyncWebServerRequest::authenticate`](https://github.com/esphome/esphome/blob/ef2121a215890d46dc1d25ad363611ecadc9e25e/esphome/components/web_server_idf/web_server_idf.cpp#L256) only compares up to `auth.value().size() - auth_prefix_len` bytes of the base64-encoded `user:pass` string. This means a client-provided valuer like `dXNlcjpz` (`user:s`) will pass the check when the correct value is much longer, e.g., `dXNlcjpzb21lcmVhbGx5bG9uZ3Bhc3M=` (`user:somereallylongpass`).&lt;/p&gt;
&lt;p&gt;Furthermore, the check will also pass when the supplied value is the empty string, which removes the need to know (or brute force) the username. A browser won&amp;#39;t generally issue such a request, but it can easily be done by manually constructing the `Authorizaztion` request header (e.g., via `curl`).&lt;/p&gt;
&lt;p&gt;### PoC
Configure ESPHome as follows:&lt;/p&gt;
&lt;p&gt;```yaml
esp32:
  board: ...
  framework:
    type: esp-idf
web_server:
  auth:
    username: user
    password: somereallylongpass
```…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: esphome&lt;/p&gt;
&lt;p&gt;### Summary
On the ESP-IDF platform, ESPHome&amp;#39;s [`web_server` authentication](https://esphome.io/components/web_server.html#configuration-variables) check can pass incorrectly when the client-supplied base64-encoded `Authorization` value is empty or is a substring of the correct value (e.g., correct username with partial password). This allows access to `web_server` functionality (including OTA, if enabled) without knowing any information about the correct username or password.&lt;/p&gt;
&lt;p&gt;### Details
The HTTP basic auth check in `web_server_idf`&amp;#39;s [`AsyncWebServerRequest::authenticate`](https://github.com/esphome/esphome/blob/ef2121a215890d46dc1d25ad363611ecadc9e25e/esphome/components/web_server_idf/web_server_idf.cpp#L256) only compares up to `auth.value().size() - auth_prefix_len` bytes of the base64-encoded `user:pass` string. This means a client-provided valuer like `dXNlcjpz` (`user:s`) will pass the check when the correct value is much longer, e.g., `dXNlcjpzb21lcmVhbGx5bG9uZ3Bhc3M=` (`user:somereallylongpass`).&lt;/p&gt;
&lt;p&gt;Furthermore, the check will also pass when the supplied value is the empty string, which removes the need to know (or brute force) the username. A browser won&amp;#39;t generally issue such a request, but it can easily be done by manually constructing the `Authorizaztion` request header (e.g., via `curl`).&lt;/p&gt;
&lt;p&gt;### PoC
Configure ESPHome as follows:&lt;/p&gt;
&lt;p&gt;```yaml
esp32:
  board: ...
  framework:
    type: esp-idf
web_server:
  auth:
    username: user
    password: somereallylongpass
```…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-mxh2-ccgj-8635</guid>
    </item>
    <item>
      <title>PYSEC-2026-1330 — ESP-IDF web_server basic auth bypass using empty or incomplete Authorization header</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-1330</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: esphome&lt;/p&gt;
&lt;p&gt;### Summary
On the ESP-IDF platform, ESPHome&amp;#39;s [`web_server` authentication](https://esphome.io/components/web_server.html#configuration-variables) check can pass incorrectly when the client-supplied base64-encoded `Authorization` value is empty or is a substring of the correct value (e.g., correct username with partial password). This allows access to `web_server` functionality (including OTA, if enabled) without knowing any information about the correct username or password.&lt;/p&gt;
&lt;p&gt;### Details
The HTTP basic auth check in `web_server_idf`&amp;#39;s [`AsyncWebServerRequest::authenticate`](https://github.com/esphome/esphome/blob/ef2121a215890d46dc1d25ad363611ecadc9e25e/esphome/components/web_server_idf/web_server_idf.cpp#L256) only compares up to `auth.value().size() - auth_prefix_len` bytes of the base64-encoded `user:pass` string. This means a client-provided valuer like `dXNlcjpz` (`user:s`) will pass the check when the correct value is much longer, e.g., `dXNlcjpzb21lcmVhbGx5bG9uZ3Bhc3M=` (`user:somereallylongpass`).&lt;/p&gt;
&lt;p&gt;Furthermore, the check will also pass when the supplied value is the empty string, which removes the need to know (or brute force) the username. A browser won&amp;#39;t generally issue such a request, but it can easily be done by manually constructing the `Authorizaztion` request header (e.g., via `curl`).&lt;/p&gt;
&lt;p&gt;### PoC
Configure ESPHome as follows:&lt;/p&gt;
&lt;p&gt;```yaml
esp32:
  board: ...
  framework:
    type: esp-idf
web_server:
  auth:
    username: user
    password: somereallylongpass
```…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: esphome&lt;/p&gt;
&lt;p&gt;### Summary
On the ESP-IDF platform, ESPHome&amp;#39;s [`web_server` authentication](https://esphome.io/components/web_server.html#configuration-variables) check can pass incorrectly when the client-supplied base64-encoded `Authorization` value is empty or is a substring of the correct value (e.g., correct username with partial password). This allows access to `web_server` functionality (including OTA, if enabled) without knowing any information about the correct username or password.&lt;/p&gt;
&lt;p&gt;### Details
The HTTP basic auth check in `web_server_idf`&amp;#39;s [`AsyncWebServerRequest::authenticate`](https://github.com/esphome/esphome/blob/ef2121a215890d46dc1d25ad363611ecadc9e25e/esphome/components/web_server_idf/web_server_idf.cpp#L256) only compares up to `auth.value().size() - auth_prefix_len` bytes of the base64-encoded `user:pass` string. This means a client-provided valuer like `dXNlcjpz` (`user:s`) will pass the check when the correct value is much longer, e.g., `dXNlcjpzb21lcmVhbGx5bG9uZ3Bhc3M=` (`user:somereallylongpass`).&lt;/p&gt;
&lt;p&gt;Furthermore, the check will also pass when the supplied value is the empty string, which removes the need to know (or brute force) the username. A browser won&amp;#39;t generally issue such a request, but it can easily be done by manually constructing the `Authorizaztion` request header (e.g., via `curl`).&lt;/p&gt;
&lt;p&gt;### PoC
Configure ESPHome as follows:&lt;/p&gt;
&lt;p&gt;```yaml
esp32:
  board: ...
  framework:
    type: esp-idf
web_server:
  auth:
    username: user
    password: somereallylongpass
```…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-1330</guid>
    </item>
  </channel>
</rss>
