Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-12960 — CVE-2026-12960 - Exportación indebida de componentes de aplicaciones Android en la aplicación ASUS Router (com.asus.aihome). PoC, APK de exploit, vídeo e informe del fabricante. Corregido en 1.0.0.9.74. | Kitploit
Herramientas/GitHubGitHub/l0lsec/cve-2026-12960
Seguridad AndroidAnálisis de VulnerabilidadesExplotaciónPentesting de Apps MóvilesPruebas de PenetraciónSeguridad Móvil
GitHubl0lsec/cve-2026-12960

CVE-2026-12960

CVE-2026-12960 - Exportación indebida de componentes de aplicaciones Android en la aplicación ASUS Router (com.asus.aihome). PoC, APK de exploit, vídeo e informe del fabricante. Corregido en 1.0.0.9.74.

Ver Repositorio
4hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

CVE-2026-12960

Exportación incorrecta de componentes de aplicación de Android en la aplicación ASUS Router

Un componente incluido en la aplicación ASUS Router para Android (com.asus.aihome) se declaró android:exported="true" sin android:permission. Cualquier otra aplicación en el mismo dispositivo, sin ningún permiso, podía enviarle un Intent manipulado y hacer que la aplicación ASUS Router abriera una URI controlada por el atacante en nombre del usuario.

Reportado a ASUS el 2026-03-17. Corregido por ASUS y publicado como CVE-2026-12960 el 2026-07-03.

Descubierto y reportado por Sedric Louissaint de Show Up Show Out Security.


Resumen

CVECVE-2026-12960
ProductoASUS Router App para Android (com.asus.aihome)
Afectado≤ 1.0.0.9.71
Corregido en1.0.0.9.74
DebilidadCWE-926: Exportación incorrecta de componentes de aplicación de Android
CVSS 4.06.0 Medio CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
CNAASUS
Aviso del fabricantehttps://www.asus.com/security-advisory/
Probado encom.asus.aihome 1.0.0.9.71 (Google Play), emulador Android 11

Detalle técnico

La aplicación incluye el SDK Baidu Push, que declara:

root@kitploit:~
<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="true" />

No hay atributo android:permission, por lo que el control de acceso a nivel de componentes de Android nunca se ejecuta. Cualquier aplicación instalada puede llamar a startService() contra él.

CommandService.onStartCommand() lee un Parcelable PublicMsg del extra public_msg del Intent entrante y lo pasa a handlePrivateNotification(), que ramifica según el campo mOpenType proporcionado por el atacante:

mOpenTypeComportamiento
1startActivity(ACTION_VIEW, Uri.parse(mUrl)) con el mUrl del atacante

Ni el remitente ni la carga útil son validados. Debido a que la actividad resultante se lanza desde el propio UID y proceso de la aplicación ASUS, lo que aparece en pantalla parece provenir de la aplicación de gestión del router en la que el usuario confía y que acaba de abrir.

En la práctica, nada de esto es específico de Baidu. El SDK incluye el componente exportado, la aplicación anfitriona lo hereda y la identidad de la aplicación anfitriona es lo que se toma prestado.

Cadena de ataque

  1. La aplicación maliciosa construye un Parcelable PublicMsg que coincide con la disposición de campos del objetivo.
  2. Establece mOpenType = 1 y mUrl en una URI controlada por el atacante.
  3. Envía el Intent a CommandService. No se requiere permiso, no se lanza SecurityException.
  4. onStartCommand() → handlePrivateNotification().
  5. startActivity(ACTION_VIEW, Uri.parse(mUrl)) se dispara desde el proceso de la aplicación ASUS.

El orden de los campos de PublicMsg, recuperado de writeToParcel en el smali descompilado y reimplementado en poc/PublicMsg.java:

root@kitploit:~
String mMsgId, mAppId, mTitle, mDescription, mUrl, mPkgName
int    mPkgVercode, mNotificationBuilder, mNotificationBasicStyle
int    mOpenType, mUserConfirm
String mCustomContent, mPkgContent
int    mAdvertiseStyle
String mAdvertiseSmallIconUrl, mAdvertiseLargeIconUrl, mAdvertiseClickUrl,
       mAdvertiseBigPictureUrl, mAdvertiseBigPictureClickUrl, mAdvertiseDownloadClickUrl

Si el orden es incorrecto, el Parcel se deserializa en basura. Si es correcto, el servicio acepta el mensaje como si lo hubiera enviado la propia infraestructura de push de Baidu.

Payloads demostrados

Seis esquemas URI, un servicio exportado, cero permisos:

Prueba de concepto

media/poc_commandservice.mp4 es la ejecución completa de 31 segundos: compilar, instalar, disparar y el emulador reaccionando a cada payload por turno.

Ataque 1: página de phishingAtaque 2: compositor de SMSAtaque 3: marcadorPermisos de la aplicación PoC
Navegador abierto en una URL del atacante

Esa última captura es todo el argumento. No se solicitaron permisos. La aplicación que acaba de ejecutar seis acciones a través de la aplicación ASUS Router no le pidió nada al usuario.

Reproducción

Requiere ADB, un JDK y las herramientas de compilación del SDK de Android (aapt2, d8/dx, zipalign, apksigner) además de platforms;android-30.

root@kitploit:~
./poc/poc_commandservice_exploit.sh <device_serial>

El script ejecuta tres fases:

  1. Comprobación de acceso. Envía las tres acciones de CommandService desde com.android.shell e informa si alguna es rechazada. Un servicio protegido por permiso lanzaría SecurityException aquí. Este aceptó las tres.
  2. Compilación. Compila el PoC, empaqueta y firma exploit_commandservice.apk, y lo instala. Hay una copia precompilada en poc/ si prefieres omitir este paso.
  3. Ejecución. Lleva la aplicación ASUS al primer plano, lanza el PoC desde un contexto de aplicación sin privilegios y captura la evidencia de logcat.

Salida de la fase 1 en un dispositivo vulnerable:

root@kitploit:~
[ACCESS]  passthrough.notification.CLICK → service accepted intent
[ACCESS]  privatenotification.CLICK      → service accepted intent
[ACCESS]  privatenotification.DELETE     → service accepted intent

  Phase 1 result: 3/3 actions accepted without permission check

Y el ServiceRecord de dumpsys activity services, que registra al llamante:

root@kitploit:~
intent={act=com.baidu.android.pushservice.action.privatenotification.CLICK
        cmp=com.asus.aihome/com.baidu.android.pushservice.CommandService}
recentCallingPackage=com.android.shell
startRequested=true callStart=true

Fase 3, desde una aplicación real sin privilegios en lugar del shell:

root@kitploit:~
W PoCExploit: [OK] attack1_url_open → com.asus.aihome/com.baidu.android.pushservice.CommandService
W PoCExploit: [OK] attack2_sms_compose → ...
(all 6 succeed)

startService() devolvió el ComponentName objetivo en lugar de null, y no se lanzó ninguna SecurityException. Android resolvió el Intent y lo entregó.

Contenido del repositorio

root@kitploit:~
poc/
  poc_commandservice_exploit.sh   Automated three-phase reproduction script
  ExploitCommandService.java      PoC activity + broadcast receiver source
  PublicMsg.java                  Parcelable matching the target's field layout
  AndroidManifest_PoC.xml         PoC manifest (note: no <uses-permission>)
  exploit_commandservice.apk      Prebuilt PoC, debug-signed, zero permissions
media/
  poc_commandservice.mp4          Full PoC recording
  attack1-browser.jpg             Stills pulled from the recording
  attack2-sms.jpg
  attack3-dialer.jpg
  poc-app-no-permissions.jpg
vendor/
  asus-security-advisory-submission.pdf   The report as filed with ASUS

La URL saliente del PoC es un subdominio de Burp Collaborator que se usó para confirmar que la navegación realmente ocurría. Hace tiempo que está muerto. Si estás reproduciendo, usa el tuyo.

Remediación

Para el proveedor, la corrección es un atributo:

root@kitploit:~
<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="false" />

O, si el componente realmente tiene que ser accesible desde fuera, protégelo con un permiso de nivel de protección signature y valida el PublicMsg deserializado antes de actuar sobre él. ASUS publicó la corrección en 1.0.0.9.74.

Para los usuarios: actualiza la aplicación ASUS Router a 1.0.0.9.74 o posterior.

Para todos los demás que distribuyan aplicaciones Android: audita lo que exportan tus SDK de terceros. Ejecuta aapt dump xmltree base.apk AndroidManifest.xml contra tu build de release y lee cada exported="true" que contenga. El manifiesto que distribuyes es la suma de todos los manifiestos que fusionaste, y eres responsable de todo él.

Cronología

FechaEvento
2026-03-17Reportado a ASUS con APK PoC, script automatizado y video
2026-06-23CVE-2026-12960 reservado por ASUS como CNA
2026-07-03CVE publicado; corrección disponible en 1.0.0.9.74
2026-07-25Publicación del write-up y del PoC

Informes

  • Cuenta personal: https://sedriclouissaint.com/blog/asus-router-app-exported-commandservice-cve-2026-12960
  • Show Up Show Out Security: https://susos.co/blog/improper-export-of-android-components-in-the-asus-router-app-cve-2026-12960

Aviso legal

Publicado después de una divulgación coordinada y de la corrección del proveedor, con fines defensivos y educativos. El PoC apunta a una versión parcheada y no hace nada más que lanzar URIs. No lo ejecutes contra dispositivos que no sean tuyos o para los que no tengas autorización por escrito para probar.

Descargar herramienta
2Intent.parseUri(mPkgContent, 0) y luego startActivity() / sendBroadcast()
#SchemeResultado
1https:El navegador abre una página de phishing controlada por el atacante
2sms:El compositor de SMS se rellena con un mensaje de ingeniería social
3tel:El marcador se rellena con un número controlado por el atacante
4mailto:El compositor de correo se rellena para exfiltrar credenciales
5market:Redirección a Play Store para instalar malware
6geo:Redirección en Mapas a un centro de servicio falso
Compositor de SMS rellenado con una falsa alerta de seguridad de ASUS
Marcador rellenado con un número del atacante
Pantalla de información de la aplicación Android que muestra "No se solicitaron permisos"