ИсследованияКритический

Усиление безопасности GPU в Android: сокращение вектора атак с помощью SELinux

3 мин чтенияИсточник: Google Security Blog

Google и Arm внедрили меры по защите Mali GPU в Android. Узнайте, как SELinux ограничивает опасные IOCTL-вызовы, снижая риски эксплуатации уязвимостей.

Усиление безопасности GPU в Android: совместные меры по сокращению вектора атак

Команда безопасности и конфиденциальности Android от Google в сотрудничестве с Arm внедрила новые меры по усилению защиты графического процессора Mali, используемого в миллиардах Android-устройств по всему миру. Инициатива направлена на сокращение вектора атак драйвера GPU путём ограничения доступа к высокорисковым IOCTL (Input/Output Controls) с помощью политик SELinux (Security-Enhanced Linux).

Почему безопасность GPU имеет значение

Графические процессоры стали основной мишенью для злоумышленников из-за своей сложности и привилегированного доступа к системе. С 2021 года большинство эксплойтов на основе драйверов ядра Android нацелены именно на GPU, особенно на интерфейс между драйвером пользовательского режима (UMD) и драйвером режима ядра (KMD). Вредоносные данные могут эксплуатировать уязвимости в этом интерфейсе, приводя к повреждению памяти и компрометации системы.

Технический подход: ограничение IOCTL-вызовов GPU с помощью SELinux

Команда Android Red Team и Arm разделили IOCTL-вызовы Mali GPU на три категории:

  • Непривилегированные IOCTL – необходимы для нормальной работы, доступны всем приложениям.
  • Инструментальные IOCTL – используются для отладки и профилирования, ограничены для приложений с правами shell или debuggable.
  • Ограниченные IOCTL – устаревшие или предназначенные только для разработки, блокируются в производственных средах.

Для внедрения этих ограничений Google реализовал поэтапное развёртывание политик SELinux, чтобы минимизировать риски сбоев:

  1. Политика с возможностью включения – изначально тестировалась на отдельных системных приложениях с использованием нового атрибута SELinux gpu_harden.
  2. Политика с возможностью отключения – усиление защиты применялось по умолчанию, позволяя разработчикам обходить ограничения через:
    • Рутированные устройства
    • Параметр android:debuggable="true" в манифесте приложения
    • Постоянные исключения в политиках SELinux

Руководство по внедрению для OEM-производителей и разработчиков

Google предоставил пошаговое руководство для партнёров по внедрению аналогичных мер защиты:

1. Использование макроса усиления защиты на уровне платформы

Новый макрос в system/sepolicy/public/te_macros позволяет фильтровать IOCTL-вызовы в зависимости от устройства:

  • Разрешает непривилегированные IOCTL для всех приложений (appdomain).
  • Ограничивает инструментальные IOCTL для средств отладки (shell, runas_app).
  • Блокирует устаревшие IOCTL в зависимости от целевой версии SDK.

2. Определение списков IOCTL для конкретных устройств

OEM-производителям необходимо создать файл ioctl_macros в директории политик SELinux своего устройства, категоризировав IOCTL-вызовы (например, mali_production_ioctls, mali_instrumentation_ioctls).

Пример:

define(`unpriv_gpu_ioctls', `0x0000, 0x0001, 0x0002')
define(`restricted_ioctls', `0x1110, 0x1111, 0x1112')
define(`instrumentation_gpu_ioctls', `0x2220, 0x2221, 0x2222')

Официальная категоризация IOCTL от Arm доступна в документации по архитектуре GPU r54p2.

3. Применение политики к устройству GPU

Создайте файл gpu.te в директории политик SELinux устройства и вызовите платформенный макрос с определёнными списками IOCTL.

4. Тестирование, доработка и внедрение

Следуйте лучшим практикам итеративной разработки политик SELinux, анализируя логи отказов, чтобы убедиться в отсутствии нарушений работы легитимных приложений.

Влияние и перспективы

Эти меры по усилению защиты сокращают вектор атак графических процессоров Mali, защищая пользователей как от известных, так и неизвестных уязвимостей. Благодаря тому, что уязвимости становятся недоступными для эксплуатации, данный подход обеспечивает долгосрочные преимущества в области безопасности. Google призывает OEM-производителей внедрять эти меры для усиления защиты GPU во всей экосистеме Android.

Официальная документация

Благодарности

Особая благодарность Джеффри Вандер Ступу за вклад в реализацию данной инициативы.

Поделиться

TwitterLinkedIn