CVE-2021-29256
Arm Mali Graphics Processing Unit (GPU)
2023-07-07
Arm Mali GPU Kernel Driver contains a use-after-free vulnerability that may allow a non-privileged user to gain root privilege and/or disclose information.
Технический анализ и план устранения
Суть уязвимости
CVE-2021-29256 представляет собой критическую уязвимость класса Use-After-Free (использование памяти после освобождения) в драйвере ядра Arm Mali GPU (Kernel Driver). Проблема возникает из-за некорректной обработки операций отображения памяти (memory mapping) и управления ссылками на объекты в пространстве ядра.
Локальный непривилегированный пользователь может эксплуатировать этот недостаток для: * Повышения привилегий до уровня суперпользователя (root). * Чтения конфиденциальных данных из памяти ядра (Information Disclosure). * Вызова отказа в обслуживании (Kernel Panic/DoS).
Уязвимость затрагивает следующие версии драйверов: * Midgard Kernel Driver: все версии от r4p0 до r30p0. * Bifrost Kernel Driver: все версии от r0p0 до r30p0. * Valhall Kernel Driver: все версии от r19p0 до r30p0.
Как исправить
Основным способом устранения уязвимости является обновление драйвера ядра Arm Mali до актуальной версии, в которой внесены исправления в логику управления памятью.
- Определите текущую версию драйвера и архитектуру GPU.
- Скачайте исправленную версию драйвера (r31p0 или выше) с официального портала Arm Developer.
- Примените патч к исходному коду ядра или обновите бинарный модуль драйвера.
Для систем на базе Android/Linux, использующих исходный код ядра, необходимо интегрировать официальный патч от Arm:
git apply 0001-security-fix-for-CVE-2021-29256.patch
После применения патча необходимо пересобрать ядро или модуль драйвера:
make modules
Затем установите обновленный модуль:
make modules_install
Для конечных пользователей мобильных устройств необходимо проверить наличие обновлений безопасности от производителя (OTA-обновление) и установить их.
Временные меры
Если немедленное обновление драйвера невозможно, рекомендуется принять следующие меры для снижения риска эксплуатации:
- Ограничьте доступ к устройствам GPU (
/dev/mali*) для непривилегированных пользователей и подозрительных приложений, если это не нарушает работу критических сервисов.
chmod 660 /dev/mali*
-
Используйте механизмы принудительного контроля доступа (SELinux или AppArmor) для блокировки доступа недоверенных процессов к интерфейсам драйвера Mali.
-
Внедрите аудит системных вызовов, связанных с управлением памятью GPU, для обнаружения попыток эксплуатации:
auditctl -a always,exit -S mmap -F path=/dev/mali0
- Изолируйте выполнение потенциально опасного кода (например, веб-браузеров или сторонних приложений) в песочницах, чтобы предотвратить прямой доступ к уязвимому драйверу ядра.