
CVE-2026-0013 Android EoP PoC - Скомпилированные артефакты для исследований в области безопасности (Производное от inforcqb/cve-2026-0013-exploit)
Уязвимость Android DocumentsUI Confused Deputy — проект верификации исследования безопасности
Этот репозиторий является производным сборочным репозиторием и связан с исходным основным репозиторием.
| Роль | Репозиторий | Описание |
|---|---|---|
| Основной репозиторий | inforcqb/cve-2026-0013-exploit | Исходное исследование уязвимости |
| Данный репозиторий | XiaoBaiLovesStirring/cve-2026-0013-poc | Распространение артефактов облачной сборки |
Перед доступом к этому репозиторию обязательно прочитайте и поймите SECURITY_PROTOCOL.md.
Ключевые моменты:
GitHub Pages: https://XiaoBaiLovesStirring.github.io/cve-2026-0013-poc/
Запустить сборку: https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc/actions
Получить артефакты: git clone --branch artifacts https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc.git
Изменения: targetIntent, запускаемый от имени DocumentsUI, теперь указывает на новый собственный компонент IdTestActivity. Этот компонент выполняет id и записывает идентичность процесса и результат в logcat и уведомления, чтобы проверить два ключевых факта:
Intent.EXTRA_INTENT и запускает целевой компонент от своего имениМеханизм (важно): Согласно модели изоляции Android, любой компонент стороннего приложения, независимо от того, кто его запустил, работает только в том процессе/UID, который объявлен самим приложением. Только через делегированный запуск DocumentsUI IdTestActivity по-прежнему будет работать с UID приложения com.example.cve20260013exploit (например, u0_a702/10702) и не станет автоматически UID 10054 DocumentsUI. Чтобы весь APK получил UID 10054, требуется sharedUserId="android.uid.documentsui" (требуется системная подпись, недоступная сторонним приложениям) или root-среда. Ценность v1.0.4 — в проверке, потребляется ли EXTRA_INTENT и какова реальная идентичность делегированного запуска.
Проблема: На OPPO/ColorOS PickActivity в DocumentsUI больше не потребляет Intent.EXTRA_INTENT, переданный вызывающей стороной. В ходе тестов mCallingUid по-прежнему равен вызывающей стороне u0_a702; PickActivity просто отображает собственный интерфейс выбора и останавливается, не выполняя никаких целевых действий от имени DocumentsUI (uid=10054). Исходная цепочка Confused Deputy фактически разорвана.
Исправление (переработка цепочки запуска):
ACTION_OPEN_DOCUMENT / ACTION_GET_CONTENT + CATEGORY_OPENABLE + */*)picker.PickActivity и нативный PickActivity, чтобы избежать краха при отсутствии входаcontent:// определяется хост авторизации (probeUriGrant), что проверяет состоятельность Confused Deputy со стороны авторизующего субъектаМеханизм: Само приложение не может заставить процесс DocumentsUI выполнять произвольные команды от своего имени. «Повышение привилегий» в Confused Deputy заключается в том, чтобы заставить DocumentsUI удерживать/передавать авторизованные ресурсы, доступные только с его собственным uid. Поэтому v1.0.3 теперь проверяет, «кто получил права на URI, выданные DocumentsUI», а не выполняет id внутри собственного процесса приложения.
Запись об исправлении сборки: Первая сборка завершилась ошибкой: getPackageManager().resolveActivity() возвращает ResolveInfo, а не ComponentName, с ошибкой error: incompatible types: ResolveInfo cannot be converted to ComponentName. Исправление: из ResolveInfo.activityInfo извлекаются packageName/name и конструируется ComponentName, после чего сборка проходит.
Изменения: Действие PoC изменено с «запуска Termux» на «выполнение команды id после срабатывания цепочки Confused Deputy и отображение результата в системном уведомлении».
id (пробует несколько путей: sh -c id, id, /system/bin/id, /system/xbin/id)uid/gid/groups, отображается в уведомленииpicker.PickActivity → нативный .PickActivity)POST_NOTIFICATIONS для Android 13+ для отправки уведомленийПроблема: Некоторые вендоры (например, OPPO) изменили пути классов DocumentsUI: нативный вход com.android.documentsui.PickActivity перенесён в com.android.documentsui.picker.PickActivity, из-за чего старые собранные артефакты не могут найти точку входа эксплойта на целевом устройстве.
Исправление:
com.android.documentsui.picker.PickActivity.PickActivityРуководство по устранению ошибок сборки (важно):
dumpsys package com.android.documentsui или таблицу Activity Resolver, затем измените параметр setClassName в ExploitActivity.java и отправьте изменения для перезапуска сборкиCVE-2026-0013 | HIGH (CVSS 8.4) | CWE-441 | Android 14-16 | DocumentsUI PickActivity
Бюллетень исправлений: Android Security Bulletin 2026-03-01