
CVE-2026-0013 Android EoP PoC - Artefacts compilés pour la recherche en sécurité (Dérivé de inforcqb/cve-2026-0013-exploit)
Android DocumentsUI – vulnérabilité de type Confused Deputy – projet de validation de recherche en sécurité
Ce dépôt est un dépôt de compilation dérivé, affilié au dépôt principal d'origine.
| Rôle | Dépôt | Description |
|---|---|---|
| Dépôt principal | inforcqb/cve-2026-0013-exploit | Recherche originale sur la vulnérabilité |
| Ce dépôt | XiaoBaiLovesStirring/cve-2026-0013-poc | Distribution des artefacts de compilation cloud |
Avant d'accéder à ce dépôt, veuillez lire et comprendre SECURITY_PROTOCOL.md.
Points essentiels :
GitHub Pages : https://XiaoBaiLovesStirring.github.io/cve-2026-0013-poc/
Déclencher la compilation : https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc/actions
Obtenir les artefacts : git clone --branch artifacts https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc.git
Modifications : Le targetIntent lancé par délégation via DocumentsUI pointe désormais vers le nouveau composant personnalisé IdTestActivity. Ce composant se charge d'exécuter id et écrit l'identité d'exécution ainsi que les résultats dans logcat et la barre de notification, afin de vérifier concrètement deux faits essentiels :
Intent.EXTRA_INTENT et lance à sa place le composant cibleExplication du mécanisme (important) : Selon le modèle d'isolation d'Android, tout composant d'une application tierce, quel que soit celui qui le lance, ne s'exécute que dans le processus/UID déclaré par l'application elle-même. Avec le seul lancement par délégation de DocumentsUI, IdTestActivity s'exécutera toujours avec le propre UID de com.example.cve20260013exploit (par ex. u0_a702/10702) et ne deviendra pas automatiquement le uid=10054 de DocumentsUI. Pour que l'APK entier obtienne 10054, il faut sharedUserId="android.uid.documentsui" (nécessite une signature système, non disponible pour les applications tierces) ou un environnement root. La valeur de v1.0.4 est de vérifier si EXTRA_INTENT est consommé et l'identité réelle du lancement par délégation.
Problème : Sous OPPO/ColorOS, le PickActivity de DocumentsUI ne consomme plus le Intent.EXTRA_INTENT transmis par l'appelant. Lors des tests, mCallingUid reste celui de l'appelant u0_a702 ; PickActivity se contente d'afficher sa propre interface de sélection puis s'arrête, sans aucun lancement d'action cible par délégation sous l'identité de DocumentsUI (uid=10054). La chaîne Confused Deputy d'origine est de fait rompue.
Correctif (refonte de la chaîne de déclenchement) :
ACTION_OPEN_DOCUMENT / ACTION_GET_CONTENT + CATEGORY_OPENABLE + */*)picker.PickActivity et de l'entrée native PickActivity, afin d'éviter un crash si l'entrée est introuvablecontent:// à autorisation temporaire renvoyée par DocumentsUI (probeUriGrant), afin de valider, du point de vue du concédant, si le Confused Deputy tientExplication du mécanisme : L'application elle-même ne peut pas faire exécuter de commandes arbitraires par le processus de DocumentsUI ; l'« élévation de privilèges » du Confused Deputy consiste à lui faire détenir/transférer pour vous des ressources d'autorisation qu'il ne peut obtenir qu'avec son propre uid. C'est pourquoi v1.0.3 vérifie désormais « qui a obtenu l'autorisation URI accordée par DocumentsUI », plutôt que d'exécuter id dans le propre processus de l'application.
Historique du correctif de compilation : La première compilation a échoué : getPackageManager().resolveActivity() retourne un ResolveInfo et non un ComponentName, avec l'erreur error: incompatible types: ResolveInfo cannot be converted to ComponentName. Le correctif consiste à extraire packageName/name de ResolveInfo.activityInfo pour construire le ComponentName, après quoi la compilation passe.
Modifications : L'action de la preuve de concept passe de « lancer Termux » à « exécuter la commande id après avoir déclenché la chaîne Confused Deputy, puis afficher le résultat dans la barre de notification système ».
id dans l'application (en essayant plusieurs chemins : sh -c id, id, /system/bin/id, /system/xbin/id)uid/gid/groups) dans la barre de notificationpicker.PickActivity → .PickActivity native)POST_NOTIFICATIONS (Android 13+) pour l'envoi des notificationsProblème : Plusieurs fabricants (comme OPPO) ont modifié le chemin de classe de DocumentsUI : l'entrée native com.android.documentsui.PickActivity a été déplacée vers com.android.documentsui.picker.PickActivity, si bien que les anciens artefacts de compilation ne peuvent plus localiser l'entrée d'exploitation sur l'appareil cible.
Correctif :
com.android.documentsui.picker.PickActivity.PickActivityGuide de résolution des échecs de compilation (important) :
dumpsys package com.android.documentsui ou la table Activity Resolver, puis modifiez le paramètre setClassName dans ExploitActivity.java et poussez pour déclencher une recompilationCVE-2026-0013 | ÉLEVÉE (CVSS 8.4) | CWE-441 | Android 14-16 | DocumentsUI PickActivity
Annonce du correctif : Android Security Bulletin 2026-03-01