CVE-2020-0041

Android Android Kernel

ВЫСОКАЯ ВЕРОЯТНОСТЬ

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

2021-11-03

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

Android Kernel binder_transaction of binder.c contains an out-of-bounds write vulnerability due to an incorrect bounds check that could allow for local privilege escalation. This vulnerability was observed chained with CVE-2019-2215 and CVE-2020-0069 under exploit chain "AbstractEmu."

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

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

Уязвимость в подсистеме Binder ядра Android позволяет локальному приложению с низкими привилегиями выполнить атаку "out-of-bounds write" (запись за пределами выделенной памяти). Это происходит из-за некорректной проверки границ в функции binder_transaction.

  • Как используют: Злоумышленник может создать специальное вредоносное приложение, которое, используя эту уязвимость, получит повышенные привилегии (root) на устройстве. В дикой природе она использовалась в составе цепочки эксплойтов "AbstractEmu" вместе с CVE-2019-2215 и CVE-2020-0069.

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

Решение — установить патч для ядра Android от производителя устройства (OEM). Патч был включен в ежемесячные обновления безопасности Android.

  1. Определите актуальный уровень безопасности патча (Security Patch Level - SPL):

    • На устройстве: Настройки → О телефоне → Обновление ПО (или аналогичный путь).
    • Через ADB: bash adb shell getprop ro.build.version.security_patch
  2. Установите обновление:

    • Уязвимость исправлена в обновлениях безопасности за март 2020 года и новее.
    • Требуемый уровень патча: 2020-03-05 или выше.
    • Установите обновление через меню настроек устройства или с помощью инструментов производителя (например, fastboot для прошивки).
  3. Для разработчиков ядер и сборок AOSP:

    • Необходимо применить коммит из репозитория ядра Android Common.
    • Идентификатор исправления: b0c0f5e8d1f9
    • Команда для cherry-pick (пример): bash cd /path/to/kernel/source git fetch https://android.googlesource.com/kernel/common android-4.14-stable git cherry-pick b0c0f5e8d1f9
    • Пересоберите и разверните ядро.

Временное решение

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

  1. Ограничение установки приложений:

    • Разрешайте установку приложений только из официального магазина Google Play. Отключите установку из неизвестных источников (Настройки → Безопасность).
    • Это снижает риск попадания вредоносного приложения, использующего уязвимость.
  2. Минимизация привилегий:

    • Не предоставляйте приложениям излишние разрешения, особенно доступ к отладке по USB или специальные возможности.
    • Регулярно проверяйте список установленных приложений и удаляйте ненужные или подозрительные.
  3. Сегментация сети (для корпоративных устройств):

    • Изолируйте устройства, которые не могут быть обновлены, в отдельный сегмент сети с ограниченным доступом к критическим ресурсам.

Важно: Временные меры лишь снижают поверхность атаки, но не устраняют саму уязвимость. Обновление системы — единственное полное решение.