В развиваемом проектом OpenWrt инструментарии ASU (Attended SysUpgrade) выявлены критические уязвимости (CVE-2024-54143), позволяющие скомпрометировать сборочные артефакты, распространяемые через сервис sysupgrade.openwrt.org или сторонние ASU-серверы, и добиться установки модифицированных злоумышленником образов прошивок на системы пользователей, применяющих для обновления прошивок режим "attended upgrade" через web-интерфейс selector.openwrt.org или инструментарий командной строки attended.sysupgrade.
Для успешного проведения атаки злоумышленнику достаточно отправить запрос формирования сборки на сервер ASU (подобные запросы любой пользователь может отправить без прохождения аутентификации). Через манипуляции со специально оформленным списком пакетов атакующий может организовать отправку ранее сгенерированных вредоносных образов в ответ на легитимные сборочные запросы других пользователей.
Сервис ASU применяется в OpenWrt для формирования и установки обновлений прошивок без потери имеющихся настроек и установленных пользователем пакетов. Через web-интерфейс или инструментарий командной строки пользователь отправляет запрос на формирование обновлённого образа прошивки, указывая установленные в его системе пакеты. Через какое-то время сервер ASU формирует образ, соответствующий заказанному содержимому, после чего пользователь загружает его и прошивает его на своё устройство. Дополнительно предоставляется опция, позволяющая сохранить в обновлённой прошивке имеющиеся настройки.
За обработку запросов от пользователей отвечает ASU Server, который запускает автоматическую сборку образов прошивок при помощи инструментария ImageBuilder, а также поддерживает кэш из ранее подготовленных сборок. В случае, если пользователь запросил образ, который уже ранее собирался на сервере и сохраняет актуальность, система сразу отдаёт имеющийся образ из кэша без запуска сборочного процесса.
Поведение атаки стало возможным благодаря двум уязвимостям:
- Уязвимость в обработчике запросов build_reques.py из состава инструментария Imagebuilder, позволяющая добиться подстановки своих команд в сборочный процесс через передачу пользователем специально оформленных имён пакетов. Уязвимость вызвана отсутствием должной проверки спецсимволов в именах пакетов перед их использованием в числе аргументов утилиты make. Воспользовавшись данной уязвимостью атакующий может сформировать на сервере вредоносные образы прошивок, подписанные корректным сборочным ключом.
- Уязвимость в библиотеке util.py, вызванная тем, что хэши SHA-256, используемые для проверки наличия в кэше уже готовых образов прошивок, обрезались до 12 символов, что значительно снижало уровень энтропии и позволяло через подбор коллизий сформировать вредоносный образ, хэш которого совпадает с легитимным образом. В сочетании с уязвимостью в Imagebuilder проблема с хэшами могла использоваться атакующим для "загрязнения" кэша ASU Server и размещения в нём вредоносных образов, отдаваемых на запросы обычных пользователей.
Изменение, после которых появилась возможность совершения атаки, было внесено 8 июля. Проблема устранена 4 декабря. Для обеспечения работы сервиса ASU использовались отдельные серверы, не пересекающиеся с основными сборочными системами проекта, отделённые от OpenWrt Buildbot и не имеющие доступа к таким конфиденциальным ресурсам, как SSH-ключи и сертификаты для формирования цифровых подписей.
Утверждается, что разработчики OpenWrt не нашли следов компрометации инфраструктуры проекта, но для подстраховки с нуля переустановили системы, на которых выполнялись уязвимые компоненты. Проблема не затронула официальные образы, распространяемые через сайт downloads.openwrt.org, а при анализе сборочных логов не было найдено следов отправки вредоносных запросов. При этом, так как на серверах ASU выполняется автоматическая чистка сборок старше 7 дней, провести аудит старых сборок оказалось невозможно.
Вероятность использования выявленных уязвимостей на практике для распространения вредоносных образов через инфраструктуру OpenWrt оценивается представителями OpenWrt как близкая к нулю, тем не менее пользователям ASU рекомендуется на своих устройствах заменить прошивки OpenWrt на ту же версию.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62371