CVE-2023-33106
Qualcomm Multiple Chipsets
2023-12-05
Multiple Qualcomm chipsets contain a use of out-of-range pointer offset vulnerability due to memory corruption in Graphics while submitting a large list of sync points in an AUX command to the IOCTL_KGSL_GPU_AUX_COMMAND.
Технический анализ и план устранения
Суть уязвимости
CVE-2023-33106 представляет собой критическую уязвимость типа Use of out-of-range pointer offset (использование смещения указателя за пределами допустимого диапазона) в графическом драйвере ядра Qualcomm.
Проблема возникает в обработчике IOCTL_KGSL_GPU_AUX_COMMAND подсистемы KGSL (Kernel Graphics Support Layer). При передаче чрезмерно большого списка точек синхронизации (sync points) в AUX-команде происходит некорректная валидация входных данных. Это приводит к повреждению памяти (memory corruption), что позволяет локальному атакующему:
* Вызвать отказ в обслуживании (Kernel Panic/DoS).
* Повысить привилегии в системе до уровня ядра.
* Осуществить чтение или запись в защищенные области памяти.
Как исправить
Основным способом устранения является обновление прошивки устройства и ядра Android до актуальной версии, содержащей патч от Qualcomm.
-
Проверьте текущую версию патча безопасности в настройках устройства (Security Patch Level). Уязвимость устранена в обновлениях от октября 2023 года и более поздних.
-
Для OEM-производителей и разработчиков кастомных ядер необходимо применить официальный патч Qualcomm, который добавляет строгую проверку границ массива точек синхронизации перед их итерацией.
-
Если вы используете ADB для управления парком устройств, проверьте версию ядра:
adb shell uname -r
- Выполните поиск доступных обновлений системы через интерфейс настроек или с помощью команды (для поддерживаемых устройств):
adb shell cmd software_update check
Временные меры
Если установка официального патча невозможна в данный момент, рекомендуется принять следующие меры для снижения риска эксплуатации:
- Ограничьте установку приложений из неизвестных источников. Эксплуатация требует наличия вредоносного кода на устройстве для вызова специфического IOCTL.
adb shell settings put global install_non_market_apps 0
- Используйте механизмы изоляции приложений (Sandboxing) и убедитесь, что SELinux находится в режиме
Enforcing. Это может затруднить использование повреждения памяти для получения полного контроля над ядром.
adb shell getenforce
-
Для корпоративных устройств: внедрите политику минимизации привилегий, запрещающую выполнение произвольного нативного кода (JNI) приложениями с низким уровнем доверия.
-
Мониторинг стабильности: частые перезагрузки графической подсистемы или устройства могут быть признаком попыток эксплуатации уязвимости. Проверяйте логи ядра на наличие ошибок KGSL:
adb shell dmesg | grep -i kgsl