Обнаружена уязвимость в беспроводном стеке Broadcom

Обнаружена уязвимость в беспроводном стеке Broadcom

Обнаружена уязвимость в беспроводном стеке Broadcom

Исследователи безопасности из группы Zero, созданной компанией Google для предотвращения атак, совершаемых с использованием ранее неизвестных уязвимостей, опубликовали результаты обратного инжиниринга прошивки проприетарного WiFi-чипа Broadcom.

Используя уязвимости (CVE-2017-0561), выявленные в процессе изучения прошивки, исследователям удалось подготовить рабочий эксплоит, позволяющий организовать удалённое выполнение кода в контексте Wi-Fi SoC с последующим получением контроля над всей системой. Атака осуществляется через отправку по беспроводной сети специально оформленных управляющих кадров.

Wi-Fi чипы Broadcom представляют собой специализированный процессор (ARM Cortex R4 со своим 640KB ПЗУ и 768KB ОЗУ), на котором выполнятся подобие своей операционной системы с реализаций своего беспроводного стека 802.11 (FullMAC). FullMAC позволил снизить энергопотребление, разгрузив CPU, и упростил реализацию беспроводных драйверов, абстрагировав для операционной системы доступ к усложнённым современным возможностям беспроводных сетей. Обратной стороной подобного подхода, стало существенное усложнение беспроводных чипов и появление нового класса уязвимостей, которые могут привести к выполнению вредоносного кода на стороне Wi-Fi SoC и к дальнейшей компрометации через него всей системы, пишет opennet.ru.

Но уязвимость является частным случаем, а основная проблема кроется в том, что проприетарные прошивки являются "чёрным ящиком", который может свести на нет безопасность даже самой защищённой и проверенной системы. Так как Wi-Fi SoC самодостаточен и отделён от основной операционной системы, эксплуатацию уязвимостей в нём очень трудно блокировать и отследить. В ответ на критику компания Broadcom сообщила, что следующие поколения Wi-Fi SoC будут оснащены MPU (Memory Protection Unit), который позволит управлять доступом к областям памяти и помечать блоки памяти флагом, запрещающим выполнение кода.

В ходе изучения прошивки были выявлены четыре уязвимости в коде обработки кадров: две уязвимости в реализации механизмов роуминга (802.11r Fast BSS Transition (FT) и Cisco CCKM) и две (1, 2) в реализации протокола TDLS (Tunneled Direct Link Setup), предназначенного для обмена данными между разными сетями Wi-Fi в обход точек доступа. Уязвимости устранены в наборе прошивок, поставляемом в апрельском обновлении платформы Android для устройств Nexus 6, Nexus 6P, Nexus 9, Pixel C и Nexus Player.

Примечательно, что в том же обновлении Android устранены ещё две удалённо эксплуатируемые уязвимости. Первая, в crypto-движке Qualcomm (CVE-2016-10230), позволяет выполнить код в контексте ядра Linux при попытке обработки некорректно оформленных параметров. А вторая, в сетевом стеке старых версий ядра Linux (до 4.5) (CVE-2016-10229), позволяет выполнить код через отправку специально оформленного UDP-пакета.

Критическая уязвимость в TLP позволяет обойти защиту Linux

В популярной утилите TLP, которую многие владельцы ноутбуков на Linux используют для управления энергопотреблением, обнаружили критическую уязвимость. Причём проблема нашлась во время обычной проверки пакета командой SUSE Security Team и располагается во вполне штатном коде.

Брешь получила идентификатор CVE-2025-67859 и затрагивает версию TLP 1.9.0, где появился новый profiles daemon.

Этот демон работает с root-правами и управляет профилями питания через D-Bus. Задумка хорошая, но реализация подвела: в механизме аутентификации Polkit нашлась логическая ошибка, которая фактически позволяет обойти проверку прав.

Как объясняют исследователи, демон должен был строго проверять, кто именно отправляет команды. Но из-за ошибки любой локальный пользователь мог взаимодействовать с ним без должной аутентификации — а значит, менять системные настройки питания от имени root.

На этом сюрпризы не закончились. В ходе анализа специалисты SUSE нашли ещё несколько проблем, уже связанных с исчерпанием ресурсов. В частности, механизм profile hold, который позволяет временно «зафиксировать» профиль питания, оказался совершенно без валидации. Локальный пользователь мог создавать неограниченное количество таких блокировок, причём без прав администратора.

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

Любопытно, что SUSE вспомнила похожую историю с демоном управления питанием в GNOME: аналогичную проблему находили ещё несколько лет назад. Отдельно исследователи отметили вопросы к механизму «куки», которыми отслеживаются profile hold. Формально речь шла о предсказуемости значений, но в сочетании с отсутствием лимитов это лишь расширяло поверхность атаки.

К счастью, реакция была быстрой. SUSE сообщила об уязвимостях разработчикам ещё в декабре, и в версии TLP 1.9.1 проблема уже закрыта. В частности, число одновременных profile hold теперь жёстко ограничено числом 16, что убирает риск истощения ресурсов.

RSS: Новости на портале Anti-Malware.ru