
CVE-2026-0013 Android EoP PoC - Artefactos compilados para investigación de seguridad (Derivado de inforcqb/cve-2026-0013-exploit)
Android DocumentsUI vulnerabilidad de proxy confundido (Confused Deputy) - Proyecto de verificación de investigación de seguridad
Este repositorio es un repositorio de compilación derivado y mantiene una relación subordinada con el repositorio principal original.
| Función | Repositorio | Descripción |
|---|---|---|
| Repositorio principal | inforcqb/cve-2026-0013-exploit | Investigación original de la vulnerabilidad |
| Este repositorio | XiaoBaiLovesStirring/cve-2026-0013-poc | Distribución de artefactos de compilación en la nube |
Antes de acceder a este repositorio, asegúrese de leer y comprender SECURITY_PROTOCOL.md.
Puntos clave:
GitHub Pages: https://XiaoBaiLovesStirring.github.io/cve-2026-0013-poc/
Activar compilación: https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc/actions
Obtener artefactos: git clone --branch artifacts https://github.com/XiaoBaiLovesStirring/cve-2026-0013-poc.git
Cambios: el targetIntent que DocumentsUI lanza en nombre del llamador ahora apunta al nuevo componente propio IdTestActivity. Este componente es responsable de ejecutar id y escribir la identidad de ejecución y los resultados en logcat y en la barra de notificaciones, para verificar empíricamente dos hechos clave:
Intent.EXTRA_INTENT e inicia el componente objetivo en nombre del llamadorExplicación del mecanismo (importante): según el modelo de aislamiento de Android, cualquier componente de una aplicación de terceros, sin importar quién lo inicie, solo se ejecutará dentro del proceso/UID declarado por sí mismo. Solo con el lanzamiento en nombre de DocumentsUI, IdTestActivity seguirá ejecutándose con el propio UID de com.example.cve20260013exploit (p. ej., u0_a702/10702) y no se convertirá automáticamente en uid=10054 de DocumentsUI. Para que todo el APK obtenga el 10054, se necesita sharedUserId="android.uid.documentsui" (requiere firma de sistema, no disponible para terceros) o un entorno root. El valor de v1.0.4 radica en verificar si EXTRA_INTENT es consumido y la identidad real del componente lanzado en nombre del llamador.
Problema: en OPPO/ColorOS, PickActivity de DocumentsUI ya no consume el Intent.EXTRA_INTENT pasado por el llamador. En las pruebas reales, mCallingUid seguía siendo el u0_a702 del llamador; PickActivity solo renderizaba su propia interfaz de selección y luego se detenía, sin lanzar ninguna acción objetivo en nombre de DocumentsUI (uid=10054). La cadena original de proxy confundido quedó de hecho rota.
Corrección (rediseño de la cadena de activación):
ACTION_OPEN_DOCUMENT / ACTION_GET_CONTENT + CATEGORY_OPENABLE + */*)picker.PickActivity como para la entrada nativa PickActivity, para evitar fallos si no se encuentra la entradacontent:// con autorización temporal devuelto por DocumentsUI para consultar inversamente la identidad del anfitrión de la autorización (probeUriGrant), verificando desde la perspectiva del otorgante si el proxy confundido se sostieneExplicación del mecanismo: la aplicación en sí no puede hacer que el proceso de DocumentsUI ejecute comandos arbitrarios en su nombre; la «elevación de privilegios» del proxy confundido consiste en hacer que DocumentsUI tenga y reenvíe en su lugar los recursos de autorización que solo puede obtener con su propio uid. Por lo tanto, v1.0.3 pasa a verificar «quién obtuvo el permiso de URI otorgado por DocumentsUI», en lugar de ejecutar id dentro del propio proceso de la aplicación.
Registro de corrección de compilación: la primera compilación falló; getPackageManager().resolveActivity() devuelve un tipo ResolveInfo en lugar de ComponentName, con el error error: incompatible types: ResolveInfo cannot be converted to ComponentName. Se corrigió extrayendo packageName/name de ResolveInfo.activityInfo para construir el ComponentName y así pasó.
Cambios: la acción de la prueba de concepto cambia de «iniciar Termux» a «ejecutar el comando id después de activar la cadena de proxy confundido y mostrar el resultado en la barra de notificaciones del sistema».
id dentro de la aplicación (probando múltiples rutas: sh -c id, id, /system/bin/id, /system/xbin/id)uid/gid/groups, etc.) en la barra de notificacionespicker.PickActivity → .PickActivity nativa)POST_NOTIFICATIONS de Android 13+ para enviar notificacionesProblema: varios fabricantes (como OPPO) han modificado la ruta de clases de DocumentsUI; la entrada nativa com.android.documentsui.PickActivity se ha movido a com.android.documentsui.picker.PickActivity, por lo que los artefactos de compilación antiguos no pueden localizar la entrada de explotación en el dispositivo objetivo.
Corrección:
com.android.documentsui.picker.PickActivity.PickActivityGuía para solucionar fallos de compilación (importante):
dumpsys package com.android.documentsui o la Activity Resolver Table; luego modifique el parámetro setClassName en ExploitActivity.java y haga push para activar una nueva compilaciónCVE-2026-0013 | HIGH (CVSS 8.4) | CWE-441 | Android 14-16 | DocumentsUI PickActivity
Aviso de corrección: Android Security Bulletin 2026-03-01