
CVE-2026-0013 Android EoP PoC - Kompilierte Artefakte für die Sicherheitsforschung (Abgeleitet von inforcqb/cve-2026-0013-exploit)
Android DocumentsUI Confused-Deputy-Schwachstelle – Projekt zur Sicherheitsforschungs-Validierung
Dieses Repository ist ein abgeleitetes Build-Repository und steht in einer Nebenbeziehung zum ursprünglichen Haupt-Repository.
| Rolle | Repository | Beschreibung |
|---|---|---|
| Haupt-Repository | inforcqb/cve-2026-0013-exploit | Ursprüngliche Schwachstellenforschung |
| Dieses Repository | XiaoBaiLovesStirring/cve-2026-0013-poc | Verteilung der Cloud-Build-Artefakte |
Bevor Sie auf dieses Repository zugreifen, lesen und verstehen Sie bitte unbedingt SECURITY_PROTOCOL.md.
Wichtige Punkte:
GitHub Pages: https://XiaoBaiLovesStirring.github.io/cve-2026-0013-poc/
Build auslösen: https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc/actions
Artefakte abrufen: git clone --branch artifacts https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc.git
Änderungen: Der von DocumentsUI stellvertretend gestartete targetIntent zeigt nun auf die neu hinzugefügte eigene Komponente IdTestActivity. Diese Komponente führt id aus und schreibt die Laufzeitidentität sowie das Ergebnis in logcat und die Benachrichtigungsleiste, um zwei entscheidende Fakten praktisch zu verifizieren:
Intent.EXTRA_INTENT konsumiert und die Zielkomponente stellvertretend startetMechanismus-Erläuterung (wichtig): Gemäß dem Android-Isolationsmodell läuft jede Komponente einer Drittanbieter-App – unabhängig davon, von wem sie gestartet wird – ausschließlich in dem von ihr selbst deklarierten Prozess/UID. Selbst mit dem stellvertretenden Start durch DocumentsUI läuft IdTestActivity weiterhin unter der eigenen UID von com.example.cve20260013exploit (z. B. u0_a702/10702) und wird nicht automatisch zur uid=10054 von DocumentsUI. Um für die gesamte APK die UID 10054 zu erhalten, wären sharedUserId="android.uid.documentsui" (erfordert System-Signatur, für Drittanbieter nicht verfügbar) oder eine Root-Umgebung erforderlich. Der Wert von v1.0.4 liegt darin, zu verifizieren, ob EXTRA_INTENT konsumiert wird und welche tatsächliche Identität der stellvertretende Start besitzt.
Problem: Auf OPPO/ColorOS konsumiert die PickActivity von DocumentsUI das vom Aufrufer übergebene Intent.EXTRA_INTENT nicht mehr. In der Praxis blieb mCallingUid weiterhin die Aufrufer-UID u0_a702; die PickActivity rendert lediglich ihre eigene Auswahloberfläche und stoppt dann, ohne irgendeine Zielaktion mit der Identität von DocumentsUI (uid=10054) stellvertretend auszuführen. Die ursprüngliche Confused-Deputy-Kette ist damit faktisch unterbrochen.
Behebung (Neugestaltung der Auslösekette):
ACTION_OPEN_DOCUMENT / ACTION_GET_CONTENT + CATEGORY_OPENABLE + */*) auflösenpicker.PickActivity sowie der native Einstieg PickActivity bleiben als explizite Fallback-Nennung erhalten, um Abstürze zu vermeiden, falls der Einstieg nicht gefunden wirdcontent://-URI wird die Identität des Autorisierungs-Hosts zurückverfolgt (probeUriGrant), um aus Sicht des Autorisierenden zu verifizieren, ob die Confused-Deputy-Beziehung zutrifftMechanismus-Erläuterung: Eine Anwendung kann den DocumentsUI-Prozess nicht dazu bringen, beliebige Befehle in ihrem Auftrag auszuführen; die „Rechteerweiterung“ der Confused-Deputy-Schwachstelle besteht darin, sie dazu zu bringen, Autorisierungsressourcen, die sie nur mit ihrer eigenen UID erhalten kann, für dich zu halten beziehungsweise weiterzuleiten. Daher wurde in v1.0.3 umgestellt auf die Verifikation „Wer hat die von DocumentsUI gewährte URI-Berechtigung erhalten“, statt id im eigenen App-Prozess auszuführen.
Build-Fehlerbehebungsprotokoll: Der erste Build schlug fehl; der Rückgabetyp von getPackageManager().resolveActivity() ist ResolveInfo und nicht ComponentName, mit dem Fehler error: incompatible types: ResolveInfo cannot be converted to ComponentName. Behoben wurde dies, indem packageName/name aus ResolveInfo.activityInfo extrahiert und daraus ein ComponentName konstruiert wurde; danach lief der Build durch.
Änderungen: Die Proof-of-Concept-Aktion wurde von „Termux starten“ geändert zu „Nach Auslösen der Confused-Deputy-Kette den Befehl id ausführen und das Ergebnis in der System-Benachrichtigungsleiste anzeigen“.
id ausgeführt (mehrere Pfade werden versucht: sh -c id, id, /system/bin/id, /system/xbin/id)uid/gid/groups und weitere Ausführungsergebnisse werden in der Benachrichtigungsleiste angezeigtpicker.PickActivity → native .PickActivity)POST_NOTIFICATIONS-Berechtigung für Android 13+, um Benachrichtigungen senden zu könnenProblem: Mehrere Hersteller (z. B. OPPO) haben die Klassenpfade von DocumentsUI modifiziert; der native Einstieg com.android.documentsui.PickActivity wurde nach com.android.documentsui.picker.PickActivity verschoben, sodass ältere Build-Artefakte den Exploit-Einstieg auf Zielgeräten nicht mehr finden konnten.
Behebung:
com.android.documentsui.picker.PickActivity aktualisiert.PickActivity zurückgefallenLeitfaden zur Fehlersuche bei Build-Fehlern (wichtig):
dumpsys package com.android.documentsui oder die Activity-Resolve-Tabelle, ändern Sie dann den Parameter setClassName in ExploitActivity.java und stoßen Sie die Neuübersetzung anCVE-2026-0013 | HIGH (CVSS 8.4) | CWE-441 | Android 14-16 | DocumentsUI PickActivity
Sicherheitsbulletin: Android Security Bulletin 2026-03-01