Уязвимости в Buildroot, позволяющие через MITM-атаку выполнить код на сборочном сервере

В системе сборки Buildroot, нацеленной на формирование загрузочных Linux-окружений для встраиваемых систем, выявлены шесть уязвимостей, позволяющих в ходе перехвата транзитного трафика (MITM) добиться внесения изменений в генерируемые системные образы или организовать выполнение кода на уровне сборочной системы. Уязвимости устранены в выпусках Buildroot 2023.02.8, 2023.08.4 и 2023.11.

Первые пять уязвимости (CVE-2023-45841, CVE-2023-45842, CVE-2023-45838, CVE-2023-45839, CVE-2023-45840) затрагивают код проверки целостности пакетов по хэшам. Проблемы сводятся к возможности использования HTTP для загрузки файлов и отсутствию проверочных hash-файлов для некоторых пакетов, что позволяет подменить содержимое данных пакетов, имея возможность вклиниться в трафик сборочного сервера (например, при подключении пользователя через беспроводную сеть, контролируемую атакующим).

В частности, пакеты aufs и aufs-util загружались по HTTP и не проверялись по хэшам. Хэши также отсутствовали для пакетов riscv64-elf-toolchain, versal-firmware и mxsldr, которые по умолчанию загружались по HTTPS, но в случае проблем откатывались на загрузку без шифрования с хоста https://sources.buildroot.net. При отсутствии файлов “.hash” инструментарий Buildroot считал проверку успешной и обрабатывал загруженные пакеты, в том числе применял входящие в пакеты патчи и запускал сборочные сценарии. Имея возможность подменить загружаемые пакеты, атакующий мог добавить в них собственные патчи или сборочные файлы Makefiles, что позволяло внести изменения в результирующий образ или скрипты сборочной системы и добиться выполнения своего кода.

Шестая уязвимость (CVE-2023-43608) вызвана ошибкой в реализации функциональности BR_NO_CHECK_HASH_FOR, позволяющей отключить проверку целостности по хэшам для выборочных пакетов. Некоторые пакеты, такие как ядро Linux, U-Boot и versal-firmware, допускали загрузку последних версий, для которых ещё не сформированы проверочные хэши. Для данных версий применялась опция BR_NO_CHECK_HASH_FOR, отключающая проверку по хэшу. Данные загружались по HTTPS, но по умолчанию в случае сбоя загрузки использовался откат на обращение к source.buildroot.net без шифрования по протоколу https://. Атакующий в ходе MITM-атаки мог заблокировать подключение к HTTPS-серверу и тогда загрузка откатывалась на https://sources.buildroot.net.

Release. Ссылка here.