Посмотрели кино – отдали телефон. Видеокарта в Android научилась раздавать права доступа кому попало

leer en español

Посмотрели кино – отдали телефон. Видеокарта в Android научилась раздавать права доступа кому попало

Закрытая уязвимость в Android все еще тревожит специалистов.

image

Уязвимость в графическом процессоре смартфона может звучать как узкая история для специалистов, но на деле речь идёт о прямой дороге к полному захвату Android-устройства. Авторы нового разбора CVE-2024-23380 показали, как ошибка в драйвере Qualcomm KGSL позволяла приложению без разрешений получить права root, то есть доступ почти ко всем функциям системы.

Проблема затрагивала механизм работы с памятью графического процессора на устройствах с чипами Qualcomm. Драйвер Qualcomm KGSL служит посредником между Android и графическим процессором, а доступ к соответствующему устройству есть у обычных приложений. Именно поэтому такая ошибка особенно опасна: злоумышленнику не нужно сначала получать расширенные права, достаточно запустить приложение в обычной пользовательской среде.

Специалисты сосредоточились на так называемом Virtual Buffer Object, гибком механизме управления памятью. Такой объект позволяет графическому процессору работать с разрозненными участками памяти, что удобно для производительности, но усложняет внутреннюю логику драйвера. В CVE-2024-23380 ошибка возникала из-за состояния гонки при одновременной привязке и отвязке участков памяти. В результате драйвер мог освободить страницу памяти, хотя графический процессор продолжал считать участок действующим и обращаться к нему.

По сути, система теряла контроль над тем, кому принадлежит конкретный участок памяти. Освобождённую страницу позже мог занять уже другой объект ядра, а доступ к содержимому оставался у атакующего через графический механизм. Такой сценарий открывал путь к изменению критически важных структур ядра и, в конечном счёте, к повышению привилегий до максимального уровня.

Авторы разбора подробно описали внутреннее устройство драйвера, логику подсчёта ссылок на объекты памяти и причины, по которым ошибка приводила к use-after-free. Материал показывает, что главная опасность кроется не в одном сбое, а в сочетании нескольких особенностей архитектуры. Драйвер управляет физическими страницами памяти, разделяемыми между приложением и графическим процессором, а значит, любая ошибка в такой подсистеме даёт атакующему особенно мощные возможности.

В опубликованном тексте отдельно отмечается, что после успешного срабатывания уязвимости стандартные защитные меры ядра уже не спасали ситуацию в полной мере. Причина в том, что атакующий получал контроль над физическими страницами памяти, а такой уровень доступа позволяет обходить многие привычные барьеры защиты.

Авторы также ответили на частые вопросы сообщества. По их словам, сбой срабатывал как состояние гонки, но сам по себе оказался сравнительно стабильным: неудачная попытка не обязательно приводила к аварийному завершению работы устройства. Для проверки успешного срабатывания специалисты использовали контрольные метки в памяти и отслеживали, сохранились ли данные после спорной операции.

CVE-2024-23380 закрыли в июле 2024 года, но история на этом не закончилась. Авторы напоминают, что графический стек Android и дальше остаётся важной целью для атак, а ошибки в подсистемах работы с памятью продолжают находить и исправлять в рамках регулярных обновлений безопасности. Главный вывод из разбора простой: графический процессор давно перестал быть только инструментом для вывода картинки на экран. В современных смартфонах такой компонент стал ещё одной точкой входа к ядру системы, а значит, и к полному контролю над устройством.