CVE-2021-29256

Arm Mali Graphics Processing Unit (GPU)

ВЕРОЯТНОСТЬ 0.5%

Дата обнаружения

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 до актуальной версии, в которой внесены исправления в логику управления памятью.

  1. Определите текущую версию драйвера и архитектуру GPU.
  2. Скачайте исправленную версию драйвера (r31p0 или выше) с официального портала Arm Developer.
  3. Примените патч к исходному коду ядра или обновите бинарный модуль драйвера.

Для систем на базе Android/Linux, использующих исходный код ядра, необходимо интегрировать официальный патч от Arm:

git apply 0001-security-fix-for-CVE-2021-29256.patch

После применения патча необходимо пересобрать ядро или модуль драйвера:

make modules

Затем установите обновленный модуль:

make modules_install

Для конечных пользователей мобильных устройств необходимо проверить наличие обновлений безопасности от производителя (OTA-обновление) и установить их.

Временные меры

Если немедленное обновление драйвера невозможно, рекомендуется принять следующие меры для снижения риска эксплуатации:

  1. Ограничьте доступ к устройствам GPU (/dev/mali*) для непривилегированных пользователей и подозрительных приложений, если это не нарушает работу критических сервисов.
chmod 660 /dev/mali*

  1. Используйте механизмы принудительного контроля доступа (SELinux или AppArmor) для блокировки доступа недоверенных процессов к интерфейсам драйвера Mali.

  2. Внедрите аудит системных вызовов, связанных с управлением памятью GPU, для обнаружения попыток эксплуатации:

auditctl -a always,exit -S mmap -F path=/dev/mali0

  1. Изолируйте выполнение потенциально опасного кода (например, веб-браузеров или сторонних приложений) в песочницах, чтобы предотвратить прямой доступ к уязвимому драйверу ядра.