CVE-2022-22071
Qualcomm Multiple Chipsets
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-
Временные меры
Если немедленное обновление прошивки невозможно, рекомендуется принять следующие меры для снижения риска эксплуатации:
- Ограничение доступа к отладке: Отключите возможность отладки по USB (ADB), так как это основной вектор для доставки эксплойтов, использующих специфические IOCTL вызовы.
settings put global adb_enabled 0
- Изоляция приложений:
Используйте механизмы SELinux в режиме
Enforcing. Это может заблокировать несанкционированные вызовы IOCTL от недоверенных приложений к уязвимым драйверам.
setenforce 1
- Контроль установки ПО: Запретите установку приложений из неизвестных источников, чтобы минимизировать риск запуска вредоносного кода, способного взаимодействовать с драйверами Qualcomm.
settings put secure install_non_market_apps 0
- Мониторинг системных логов: На этапе тестирования отслеживайте ошибки сегментации в ядре, которые могут указывать на попытки эксплуатации.
dmesg | grep -i "use-after-free"