CVE-2022-22706
Arm Mali Graphics Processing Unit (GPU)
2023-03-30
Arm Mali GPU Kernel Driver contains an unspecified vulnerability that allows a non-privileged user to achieve write access to read-only memory pages.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-22706 представляет собой критическую ошибку в логике управления памятью в драйвере ядра Arm Mali GPU (Kernel Driver). Уязвимость возникает из-за некорректной обработки дескрипторов памяти при выполнении определенных системных вызовов.
Основная проблема заключается в возможности повышения привилегий: непривилегированный локальный пользователь может получить доступ на запись к страницам памяти, которые помечены как «только для чтения» (read-only). Это позволяет злоумышленнику модифицировать код исполняемых процессов или системные данные, что ведет к полному компрометации устройства и получению прав уровня ядра (root).
Как исправить
Основным способом устранения уязвимости является обновление драйвера ядра Mali GPU до актуальной версии, в которой исправлена ошибка валидации прав доступа к памяти.
-
Определите текущую версию драйвера и используемую архитектуру (Valhall или Bifrost). Уязвимость затрагивает версии до r36p0.
-
Скачайте исправленную версию драйвера (r36p0 или выше) с официального портала Arm Developer.
-
Интегрируйте патч в исходный код ядра вашего устройства. Если вы используете готовый дистрибутив (например, Android), проверьте наличие обновлений безопасности от производителя (Security Patch Level от января 2022 года и позже).
-
Для самостоятельной сборки драйвера из исходников выполните пересборку модуля ядра:
make -C /lib/modules/$(uname -r)/build M=/path/to/mali_driver modules
- Установите обновленный модуль:
insmod mali_kbase.ko
Временные меры
Если немедленное обновление драйвера невозможно, рекомендуется применить следующие меры для снижения риска эксплуатации:
- Ограничьте доступ к устройству
/dev/mali*для непривилегированных пользователей, если это не нарушает работу критических графических приложений:
chmod 660 /dev/mali*
-
Используйте механизмы принудительного контроля доступа (SELinux), чтобы ограничить возможности процессов, взаимодействующих с драйвером GPU. Убедитесь, что контексты приложений имеют минимально необходимые разрешения.
-
Изолируйте выполнение потенциально опасного кода (например, браузеров или сторонних приложений) в песочницах, чтобы предотвратить прямой доступ к интерфейсам драйвера ядра.
-
Настройте аудит системных вызовов для мониторинга подозрительной активности, связанной с отображением памяти (mmap) через драйвер Mali.