Уязвимость в интеграции FFmpeg в Home Assistant позволяет получить root-доступ через спаренный сателлит

Home Assistant

Исследователи из компании Elttam обнаружили, что ошибка обработки аргументов в интеграции FFmpeg в Home Assistant может быть использована для кражи токена Supervisor и последующего выполнения команд с правами root на хост-системе. Разработчики Home Assistant выпустили исправление в версии 2026.6.2, ограничив набор допустимых протоколов FFmpeg и порядок передачи аргументов.

Детали уязвимости

Проблема связана с тем, что параметр "media_id", который передаётся в сервис объявлений Wyoming Assist satellite, напрямую подставляется в команду FFmpeg как аргумент "-i". Этот параметр контролируется пользователем, но проверка его значения была недостаточной. Ранее существовал блок-лист для URL-схем "http" и "https", направленных на адреса Home Assistant, однако псевдо-протоколы FFmpeg - "concat:", "file:", "subfile:" - не были заблокированы.

Атакующий, который контролирует спаренный Assist satellite и обладает валидным API-токеном Home Assistant, может передать в "media_id" строку, состоящую из комбинации этих псевдо-протоколов. Исследователи показали, что из существующих бинарных файлов на устройстве (например, "/bin/go2rtc") можно собрать синтетический аудиозаголовок, который FFmpeg воспримет как корректный поток. После этого к заголовку можно дописать содержимое произвольного локального файла - в частности, "/proc/self/environ". В этом файле хранится переменная окружения "SUPERVISOR_TOKEN", которая даёт доступ к Supervisor API Home Assistant.

Получив токен, злоумышленник может отправить запросы к Supervisor API и выполнить команды с правами root на хост-системе. Таким образом, изначальная уязвимость - арбитражное чтение файлов - превращается в полное удалённое выполнение кода. Для успешной эксплуатации необходимо, чтобы атакующий находился в одной сети с Home Assistant на этапе спаривания сателлита (через mDNS), но после этого достаточно любой сетевой доступности до целевого сервера.

Эксплойт, опубликованный Elttam, требует, чтобы атакующий также имел валидный API-токен Home Assistant. Сам токен можно получить, например, через другую уязвимость или социальную инженерию. Исследователи подчеркнули, что уязвимость затрагивает все версии Home Assistant Core до 2026.6.2.

В ответ на сообщение о проблеме разработчики Home Assistant ввели строгий список разрешённых протоколов для аргумента "-i" с помощью ключа "-protocol_whitelist". Теперь FFmpeg разрешено использовать только протоколы "http", "https", "file", "tcp", "tls". При этом "http" и "https" по-прежнему отклоняют адреса, ведущие к самому Home Assistant. Важно, что "-protocol_whitelist" располагается до "-i", что соответствует правилам FFmpeg: опции применяются к следующему за ними файлу. В патче также добавлен модульный тест, проверяющий порядок аргументов.

Несмотря на эффективность такого подхода, исследователи отмечают, что более надёжной мерой была бы полная санитизация пользовательского ввода перед передачей в системные утилиты, а не только ограничение протоколов.

Данная уязвимость в очередной раз обращает внимание на то, как широко используемые компоненты (FFmpeg) могут стать источниками серьёзных угроз, если их интеграция не сопровождается тщательной проверкой поступающих данных. В экосистеме умного дома, где границы доверия между внутренними сервисами часто считаются безопасными, подобные "связующие" элементы требуют особого контроля. Пользователям Home Assistant рекомендуется установить обновление до версии 2026.6.2 или новее. Те, кто использует пользовательские сборки, должны убедиться, что их конфигурация не допускает прямой передачи произвольных аргументов в FFmpeg без ограничений.

Ссылки

Комментарии: 0