Удаленно эксплуатируемая уязвимость в беспроводном стеке 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. В качестве обратной стороны подобного подхода и существенного усложнения беспроводных чипов стало появление нового класса уязвимостей, которые могут привести к выполнению вредоносного кода на стороне Wi-Fi SoC и к дальнейшем компрометации всей системы.
Но уязвимость является частным случаем, а основная проблема кроется в том, прошивки проприетарные являются черным ящиком, который может свести на нет безопасность даже самой защищенной и проверенной системы. Так как 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.
Примечательно, что в том же обновлении устранено еще две удаленно эксплуатируемые уязвимости: В crypto-движке Qualcomm (CVE-2016-10230), которая позволяет выполнить код в контексте ядра Linux при попытке обработки некорректно оформленных параметров. В сетевом стеке старых версий ядра Linux (до 4.5) устранена уязвимость (CVE-2016-10229), позволяющая выполнить код через отправку специально оформленного UDP-пакета.