CVE-2022-22071

Qualcomm Multiple Chipsets

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

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

2023-12-05

Официальное описание

Multiple Qualcomm chipsets contain a use-after-free vulnerability when process shell memory is freed using IOCTL munmap call and process initialization is in progress.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2022-22071 представляет собой критическую уязвимость класса Use-After-Free (UAF) в драйверах ядра для чипсетов Qualcomm. Проблема возникает из-за состояния гонки (race condition) в управлении памятью графического процессора или подсистемы обработки сигналов.

Когда процесс инициализируется, параллельный вызов IOCTL munmap может преждевременно освободить память оболочки процесса (shell memory). Поскольку процесс инициализации продолжает обращаться к этому указателю, происходит обращение к уже освобожденному участку памяти. Это позволяет локальному атакующему: * Вызвать отказ в обслуживании (Kernel Panic). * Добиться повышения привилегий до уровня ядра. * Выполнить произвольный код в контексте ядра.

Как исправить

Основным способом устранения является обновление прошивки устройства и ядра Android до актуальной версии, содержащей патчи от Qualcomm и Google (Security Patch Level от мая 2022 года или новее).

Для OEM-производителей и разработчиков встраиваемых систем: Необходимо интегрировать исправления из репозитория Qualcomm CodeAurora или Android Common Kernel. Исправление заключается во внедрении механизмов блокировки (mutex/spinlocks), предотвращающих выполнение munmap до завершения инициализации процесса.

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

На устройствах Android:

settings show secure software_update_info

Если вы используете кастомные сборки ядра (например, для Snapdragon), необходимо обновить исходный код и пересобрать образ:

git pull upstream master

make ARCH=arm64 vendor/generic_defconfig

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-

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

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

  1. Ограничение доступа к отладке: Отключите возможность отладки по USB (ADB), так как это основной вектор для доставки эксплойтов, использующих специфические IOCTL вызовы.
settings put global adb_enabled 0

  1. Изоляция приложений: Используйте механизмы SELinux в режиме Enforcing. Это может заблокировать несанкционированные вызовы IOCTL от недоверенных приложений к уязвимым драйверам.
setenforce 1

  1. Контроль установки ПО: Запретите установку приложений из неизвестных источников, чтобы минимизировать риск запуска вредоносного кода, способного взаимодействовать с драйверами Qualcomm.
settings put secure install_non_market_apps 0

  1. Мониторинг системных логов: На этапе тестирования отслеживайте ошибки сегментации в ядре, которые могут указывать на попытки эксплуатации.
dmesg | grep -i "use-after-free"