ESPHome до 2026.7.0-dev содержит ошибку приоритета операторов в валидаторе cv.url() в esphome/config_validation.py: `if parsed.scheme и parsed.netloc или parsed.scheme == "file": return parsed.geturl()`. Поскольку `and` связывается сильнее, чем `or`, любой file: URI проходит проверку независимо от netloc. Этот валидатор блокирует поле `url:` исходной схемы git директивы external_comComponents YAML, которое передается в `git clone` (git изначально поддерживает file://).
Созданный блок `external_comComponents` с `url: "file:///attacker/repo"` клонирует контролируемый злоумышленником локальный путь, который затем добавляется в механизм импорта Python через загрузчик компонентов ESPHome, выполняя произвольный код Python при обработке конфигурации YAML (например, через `esphome config`/`esphome run`).
Показать оригинальное описание (EN)
ESPHome through 2026.7.0-dev contains an operator-precedence bug in the cv.url validator in esphome/config_validation.py. Because binds tighter than , any file: URI passes validation regardless of netloc. This validator gates the field of the external_components YAML directive's git source schema, which is passed to (git supports file:// natively).
Характеристики атаки
Последствия
Строка CVSS v3.1