Уязвимость в Android 14, эксплуатируемая через Bluetooth LE

Разработчики проекта GrapheneOS, развивающего защищённое ответвление от кодовой базы AOSP (Android Open Source Project), выявили уязвимость в Bluetooth-стеке платформы Android 14, которая потенциально может привести к удалённому выполнению кода. Проблема вызвана обращением к уже освобождённой области памяти (use-after-free) в коде обработки звука, передаваемого через Bluetooth LE.

Уязвимость выявлена в ходе работы по интеграции в вызов hardened_malloc дополнительной защиты, использующей расширение ARMv8.5 MTE (MemTag, Memory Tagging Extension), позволяющее привязать теги к каждой операции выделения памяти и организовать проверку корректности использования указателей для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.

Ошибка проявляется начиная с обновления Android 14 QPR2 (Quarterly Platform Release), опубликованного в начале марта. В основной кодовой базе платформы Android 14 механизм MTE доступен в качестве опции и пока не применяется по умолчанию, но в GrapheneOS его уже задействовали для дополнительной защиты, что дало возможность диагностировать ошибку после обновления до Android 14 QPR2. Ошибка приводила к аварийному завершению при использовании Bluetooth-наушиков Samsung Galaxy Buds2 Pro, разбор которого показал, что проблему можно трактовать как уязвимость.

Уязвимость устранена в выпуске GrapheneOS 2024030900 и затрагивает сборки для смартфонов, в которых не включена дополнительная аппаратная защита на основе расширения MTE (MTE пока включён только для устройств Pixel 8 и Pixel 8 Pro). Уязвимость воспроизводится на смартфонах Google Pixel 8 с пошивкой на базе Android 14 QPR2. В Android для смартфонов серии Pixel 8 режим MTE можно
включить в настройках для разработчиков («Settings / System / Developer options /Memory Tagging Extensions»).

Источник: http://www.opennet.ru/opennews/art.shtml?num=60771