The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

11.12.2023 15:04

В системе сборки 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, но в случае проблем откатывались на загрузку без шифрования с хоста http://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 без шифрования по протоколу http://. Атакующий в ходе MITM-атаки мог заблокировать подключение к HTTPS-серверу и тогда загрузка откатывалась на http://sources.buildroot.net.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: В Buildroot приняты патчи для поддержки мейнфреймов IBM Z (S/390)
  3. OpenNews: Уязвимость, позволяющая удалённо выполнить код на сервере PHP-репозитория Packagist
  4. OpenNews: Уязвимость в пакетном менеджере APT, проявляющаяся в конфигурациях с зеркалами
  5. OpenNews: Уязвимость в пакетном менеджере APK, позволяющая удалённо выполнить код в Alpine Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60270-buildroot
Ключевые слова: buildroot
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 15:48, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >  выявлены шесть уязвимостей, позволяющих в ходе перехвата транзитного трафика (MITM) добиться внесения изменений в генерируемые системные образы или организовать выполнение кода на уровне сборочной системы.

    какая-то чушь от свидетелей безопаснсти, во первых пакетики без хешей только совсем малонужные и неиспользуемые - поэтому и нет хешей, и что мешает легально добавить сборочный сценарий с валидными хешами но с неизвестным содержимым в исходниках, как будто кто-то там проверяет все сценарии make

     
     
  • 2.12, 007 (??), 21:52, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Там эпичность в том, что тулчейн RISC-V как самый "модно-молодежный" входит в набор, которым пользуются 80% меинтейнеров тамошних пакетов при локальном тестировании сборок.

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

     
     
  • 3.14, Аноним (14), 22:25, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > пользуются 80% меинтейнеров тамошних пакетов при локальном тестировании сборок

    они в контейнерах и виртуалках тестируют

     
     
  • 4.22, 007 (??), 13:01, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > они в контейнерах и виртуалках тестируют

    Это спасает от шуток типа "rm -rf /", но никак не от более-менее приличной целевой атаки.

    Тут почти 100% вероятность возможности пробития и компрометации всей инфраструктуры buildroot, включая 50% мэинтейнеров.

    Другое дело, что (скорее всего, пока еще) это никому не было нужно.
    Хотя мэинтейнеров я бы подергал за причинные места - и для профилактики, ну и ради баловства.

     
     
  • 5.23, Аноним (14), 13:58, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Тут почти 100% вероятность возможности пробития и компрометации всей инфраструктуры buildroot, включая 50% мэинтейнеров.

    каким образом если каждая запущенная сборочная задача тестирует свою локальную копию ?

    https://linuxembedded.fr/2022/01/buildroot-gitlab-ci-testing

    кросскомпилятор riscv вообще для барметал - сборку пакетов на нём не тестируют, он их просто не соберёт

    https://gitlab.com/buildroot.org/buildroot/-/commit/58d7c712d7d1ef5b439ead455a

     
     
  • 6.24, 007 (??), 14:45, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > каким образом если каждая запущенная сборочная задача тестирует свою локальную копию ?

    Не образом, а подсвешником ;)
    Например, пробивается через:
    - подстановку payload по статусу сборок в gitlab (периодически находят и фиксят, сейчас вроде-бы чисто);
    - подстановку payload для пробития при разоре заголовков в proxy между серверами c CI-агентами и самим gitlab;
    - эскалацию привилегий с пробитием через какой-нибудь драйвер/шлюз/namespace;
    - побег из виртуалки, суммарно примерно десяток способов;
    - а половина меинтейнеров запускает сборку просто на рабочей машине, это вообще примерно везде так... (а собрав ключи можно вообще всю инфраструктуру застелсить/заруткитеть).

    В целом, пока не показаны положительные результаты приличного аудита, можно считать что рeшет0.
    За >10 лет практики ни разу не видел иначе.
    Погуглите хвастовство Positive Technologies, Digital Security, Group-IB, Касперов и т.д.

    > кросскомпилятор riscv вообще для барметал - сборку пакетов на нём не тестируют, он их просто не соберёт

    Buildroot он как-бы в принципе для bare metal и традиционных deb/rpm пакетов там нет.
    А "пакеты" (ну или как их назвать) собираются именно тулчейнами для конечных платформ -- это примерно 90% объема "тестирования" как такового.
    Где-то есть запуск тестов под qemu, кто-то из меинтейнеров использует железо, но в основном просто производится сборка, а тесты по конкретным жалобам пользователей.

     
     
  • 7.25, Аноним (14), 14:58, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Buildroot он как-бы в принципе для bare metal и традиционных deb/rpm пакетов там нет.

    ты конкретно не понимаешь - есть кросскомпилятор для сборки для Linux а есть для bare metal, линуксовым можно собрать барметал а наборот - нет, этот барметал компилятор для конкретного загрузчика от процессора sifive потому что он какой-то кривой и линуксовым не собирается

    > This commit adds a new package for a prebuilt bare-metal toolchain for
    > RISC-V 64-bit. Indeed, some bootloader/firmware for the BeagleV (and
    > potentially later for other platforms?) do not build with a
    > Linux-capable toolchain.

     
     
  • 8.26, 007 (??), 15:13, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну , вы не спешите делать столь смелые выводы и давать ненужные пояснения Тео... текст свёрнут, показать
     
     
  • 9.27, Аноним (14), 15:20, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а как практически выполняют MITM на gitlab были примеры надо ещё sifive взлома... текст свёрнут, показать
     
     
  • 10.28, 007 (??), 15:40, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Гуглите Были дыры уже пофикшены , были примеры Зачем Для тех кто в танке ... текст свёрнут, показать
     
     
  • 11.29, Аноним (14), 15:52, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    КАК подменить тулчейн на сервере sifive или в хранилище buildroot ты ходишь по... текст свёрнут, показать
     
     
  • 12.30, 007 (??), 17:04, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше прочитайте текст новости еще раз Но в принципе можно и согласиться с форм... текст свёрнут, показать
     
     
  • 13.31, Аноним (14), 17:56, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    какая б ть беспроводная сеть на гитлабе Шансов использовать это примерно ноль ... текст свёрнут, показать
     
  • 4.33, Аноним (-), 09:37, 13/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> пользуются 80% меинтейнеров тамошних пакетов при локальном тестировании сборок
    > они в контейнерах и виртуалках тестируют

    И, собственно, чего? Запустить майнер, спамер или ддосер на виртуалке ничуть не хуже чем на железке.

     
     
  • 5.34, Аноним (14), 12:13, 13/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Запустить майнер, спамер или ддосер на виртуалке ничуть не хуже чем на железке.

    осталось рассказать как это сделать

     
  • 2.15, YetAnotherOnanym (ok), 22:27, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Мы забор ставим только там, где много людей ходит. Где не ходят или один-два изредка пройдёт - там забор не нужен.
     

  • 1.2, Аноним (2), 15:49, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Занятная структура, читаешь - ну проходной двор просто.
     
     
  • 2.13, 007 (??), 21:54, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну дак RISC-V же, как задумано ;)
     

  • 1.3, Аноним (3), 16:07, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >возможности использования HTTP для загрузки файлов

    Нужно было просто дропнуть поддержку http без s. Хочешл грузить, не пользуясь чужими CA? Создай свой CA и залей серт. Не хочешь? Ну знаешь, куда идти.

     
     
  • 2.5, Электрон (?), 17:46, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Надо отдавать http/80 только по субдомену http, а на www, корень оставить только HTTPS.

    Хотя... митму ничто не мешает вклиниться в "отключенный" 80-ый порт. Вот вроде был certificate pinning :/ А постоянные редиректы вряд ли прикладным софтом запоминаются.

     
     
  • 3.7, Аноним (7), 18:12, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нахрена такие извращения? Просто не TLS дропнуть и всё. Я уже много лет в TLS-only режиме. Поначалу с помощью HE, сейчас - нативно. HE правда зря дропнули. Их дэйтасет был полезен для массового автоматического переписывания ссылок в гитхаб-рееозиториях.
     
     
  • 4.18, Бывалый смузихлёб (?), 09:44, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > дэйтасет

    Казалось бы, как можно настолько извратить простое и лаконичное "набор данных" / "база данных" / "база знаний"

     
     
  • 5.20, Электрон (?), 09:55, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Без дэйтасэтов не грести вам деньги дэйтасаентиста. Смузи - прошлое десятилетие.
     
  • 4.19, Электрон (?), 09:54, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я же сам написал почему. Софт сам откатывается с 443 на 80. Ну или как минимум не перехрдит на 443. Значит MITM такое и будет провоцировать. Будь у вас хоть трижды только TLS1.2 включен.

    Про HTTPS Everywhere хорошая идея, запомню.

     
  • 2.32, Аноним (32), 20:13, 12/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы простите, надеюсь вы меня услышите: что ваше решение - крайность, имхо, что оригинальное "нет хеша? Так просто его не проверяем".
    У вас - "просто отрезать возможность https".
    В оригинале - "сбилдить во чтобы-то не стало".
    То, что вы предлагаете, это, кажется, нынче называется технофашизм? Т.е. "мне пох, как у вас там что, теперь только tls и сношайтесь как хотите". Решение неплохое, строгое... но радикальное.
    Кажется, норм дефолтным вариантом было бы "всегда https, всегда проверять хеши, если хешей нет, стопиться". А для тех, кому это не подходит, возможность выставить ключики типа --https-only=false и skip-no-hash=true?
     

  • 1.4, Аноним (4), 16:24, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >пакеты aufs и aufs-util загружались по HTTP и не проверялись по хэшам
    >Некоторые пакеты, такие как ядро Linux, U-Boot и versal-firmware, допускали загрузку последних версий, для которых ещё не сформированы проверочные хэши

    И как использование безопасных языков поможет боротся с такими уязвимостями?

     
     
  • 2.6, Электрон (?), 17:48, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Безопасных ножей не бывает. Только некоторые их типы чаще соскальзывают, когда не ждешь.
     
  • 2.8, Alladin (?), 18:33, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все просто, мы просто перехватим ваш код встроенный в http(образно:) ) и скажем ошибка.
     
  • 2.10, Аноним (10), 21:45, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В безопасных языках такое поведение в принципе нормальное и допустимо в тулинге языка. Чтобы было проще и просто работало.
     

  • 1.9, Аноним (9), 20:56, 11/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ещё шесть уязвимостей публиковать не стали, сами пользуются.
     
     
  • 2.11, Аноним (10), 21:45, 11/12/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да остальные за деньги.
     

  • 1.21, Аноним (14), 09:57, 12/12/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > позволяющих в ходе перехвата транзитного трафика (MITM) добиться внесения изменений в генерируемые системные образы

    а как это происходит - хаекры вычисляют сборщика buildroot, едут к нему из другой страны, нейтрализуют соседей и ждут в их квартире когда он начнёт прошивку собирать чтобы митмить его вафай ? а если он в текущем году не намерен собирать - ворвутся к нему и заставят собирать чтобы помитмить ?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру