CVE-2020-0069
MediaTek Multiple Chipsets
2021-11-03
Multiple MediaTek chipsets contain an insufficient input validation vulnerability and have missing SELinux restrictions in the Command Queue drivers ioctl handlers. This causes an out-of-bounds write leading to privilege escalation. This vulnerability was observed chained with CVE-2019-2215 and CVE-2020-0041 under exploit chain "AbstractEmu."
Технический анализ и план устранения
Суть уязвимости
Уязвимость заключается в недостаточной проверке входных данных и отсутствии необходимых ограничений SELinux в драйверах Command Queue (cmdq) для нескольких чипсетов MediaTek. Злоумышленник с локальным доступом к устройству может выполнить специально созданный системный вызов ioctl, что приводит к записи за пределами выделенной памяти (out-of-bounds write). Это позволяет повысить привилегии в системе, получить контроль над ядром и обойти механизмы безопасности.
- Вектор атаки: Локальный (требуется выполнение кода на устройстве).
- Уровень опасности: Критический (приводит к повышению привилегий).
- Эксплуатация: Часто использовалась в составе эксплойт-чейна "AbstractEmu" вместе с CVE-2019-2215 и CVE-2020-0041.
Как исправить
Основной метод — установка обновлений безопасности от производителя устройства (OEM/ODM) или поставщика чипсета (MediaTek). Так как уязвимость затрагивает драйверы ядра и код чипсета, исправление должно быть включено в системное обновление (OTA).
-
Проверьте и установите обновления безопасности Android:
- Перейдите в Настройки → Система → Обновление системы.
- Установите последнее доступное обновление. Патч для CVE-2020-0069 был включен в обновления безопасности Android, начиная с исправлений уровня 2020-03-01 и новее.
-
Для администраторов, управляющих прошивками (например, в корпоративном парке устройств):
- Запросите у вендора устройств (Samsung, Xiaomi, Huawei и др.) обновленные образы прошивок, содержащие патчи безопасности за март 2020 года и позже.
- Убедитесь, что в сборке ядра (
/proc/version) используются исправленные исходные коды от MediaTek. Конкретные коммиты исправлений можно найти в репозиториях производителя.
-
Для сборок AOSP (Android Open Source Project):
- Убедитесь, что ваша кодовая база включает исправления из
android-security-10.0.0_r38и новее. - Патчи для ядра (
kernel/) и связанных с чипсетом компонентов должны быть заимствованы из официальных источников MediaTek.
- Убедитесь, что ваша кодовая база включает исправления из
Временное решение
Если немедленная установка обновления невозможна, рассмотрите следующие меры для снижения риска:
-
Ограничение установки приложений:
- Разрешайте установку приложений только из доверенных источников (официальный Google Play Маркет для потребительских устройств).
- На корпоративных устройствах используйте политики MDM (Mobile Device Management) для белого списка разрешенных приложений и блокировки сторонних магазинов.
-
Активация SELinux в режиме Enforcing:
- Убедитесь, что SELinux работает в строгом режиме. Это не блокирует саму уязвимость, но ограничивает потенциальный ущерб от её эксплуатации. ```bash
Проверить текущий режим SELinux
getenforce
Должно вернуть "Enforcing"
```
-
Принцип наименьших привилегий:
- Не предоставляйте пользователям и приложениям избыточные права (root-доступ, отладку по USB для ненадежных ПК).
- Используйте аппаратно-защищенные контейнеры (TrustZone) для критичных операций, если они поддерживаются чипсетом.
-
Мониторинг и обнаружение:
- Внедрите EDR-решения для мобильных устройств, способные обнаруживать аномальное поведение и попытки повышения привилегий.
- Мониторьте логи ядра (
dmesg,logcat) на предмет подозрительных вызововioctlк драйверамcmdq.
Важно: Временные решения лишь снижают вероятность успешной атаки. Полное устранение риска возможно только путем установки официального патча от производителя.