El Security Lab de GitHub reportó 24 vulnerabilidades en aplicaciones Android con un agente de IA de código abierto que cualquier desarrollador puede apuntar a su propio repositorio. El investigador Kevin Stubbings describió el trabajo en una entrada del blog de GitHub y recorrió dos hallazgos ya divulgados: una fuga silenciosa de ubicación en la aplicación de navegación OsmAnd y un secuestro de cuenta con un solo toque en la aplicación Android de Wikipedia.
Claves
- Veinticuatro vulnerabilidades de Android fueron encontradas y reportadas con flujos de tareas propios, construidos sobre el Taskflow Agent de código abierto del Security Lab de GitHub.
- Una actividad exportada en OsmAnd, una aplicación con más de 10 millones de descargas en Play Store, permitía que cualquier app instalada reescribiera los ajustes del mapa y enviara las coordenadas de los mosaicos y las rutas del usuario al servidor de un atacante.
- El modelo demostró ser mucho mejor encontrando fallos que calificándolos: generó un ruido persistente de hallazgos de baja gravedad y falsos positivos que solo la revisión humana detuvo.
Cómo se afinaron los flujos de tareas para Android
El agente en sí es genérico; el valor estaba en los prompts. Stubbings agregó un flujo de tareas, gather_mobile_entry_point_info.yaml, que separa los puntos de entrada en móviles y no móviles, de modo que un repositorio con una aplicación de teléfono, un servidor web y un cliente de escritorio no deje al modelo razonando sobre la superficie de ataque equivocada.
Después editó classify_application_local.yaml para nombrar sin rodeos las clases de vulnerabilidad —problemas de diputado confundido, difusiones inseguras— en lugar de confiar en la memoria del modelo. Como la salida no es determinista, el prompt estricto se ejecutó de forma repetida junto a uno más amplio: la versión acotada atrapa lo obvio y la amplia encuentra lo inesperado.
Qué permitía la falla de OsmAnd
Tres de los 24 reportes corresponden a OsmAnd, y el más grave se lee como un error de arquitectura y no como un descuido de programación.
MapActivity, la pantalla que maneja los deeplinks y la importación de ajustes, está exportada: cualquier otra aplicación del dispositivo puede alcanzarla.- Su ruta de importación lee extras del intent como
silent_import,replaceyexport_type_list_key, que los desarrolladores esperaban recibir únicamente por un canal AIDL dentro del mismo proceso. Android no ofrece forma de restringir qué extras adjunta un llamador externo. - Una aplicación sin permisos puede entonces escribir ajustes sin notificación ni confirmación, incluida la plantilla que OsmAnd usa para construir las URL de los mosaicos del mapa.
- Apuntada al host de un atacante, esa plantilla filtra las coordenadas de cada mosaico cargado y de cada ruta planificada, mientras el servidor retransmite las imágenes auténticas de OpenStreetMap para que el mapa parezca intacto.
No hay ningún error de seguridad de memoria ni una configuración inusual del dispositivo. Es la clase de falla lógica que los analizadores estáticos rara vez señalan y que los revisores rara vez tienen tiempo de rastrear de principio a fin.
Una verificación de deeplink que confió en la cadena equivocada
El hallazgo de Wikipedia termina en un secuestro de cuenta a partir de un enlace tocado, y la causa es una sola comparación de cadenas: su manejador de deeplinks validaba la autoridad de la URL con endsWith contra el dominio base en vez de exigir coincidencia. Una URL wikipedia:// dirigida a un dominio parecido como evil-wikipedia.org pasaba el control y se renderizaba dentro del WebView de la aplicación, ejecutando JavaScript del atacante en un contexto que la app trata como propio.
Una segunda verificación en el gestor de cookies repetía el error y permitía que esa página leyera cookies de sesión válidas en todas las propiedades de Wikimedia.
Dónde se quedó corto el modelo
Stubbings fue directo sobre el punto débil: la estimación de gravedad. El modelo siguió reportando problemas de bajo impacto incluso cuando se le indicó lo contrario, y calculó mal el impacto real cuando un factor mitigante anulaba el exploit: un path traversal hacia el almacenamiento externo no vale nada si la aplicación prioriza el almacenamiento interno para esos mismos datos. Obligarlo a construir una prueba de concepto funcional saca a la luz parte de esos casos, al costo de ejecuciones extra sobre fallos que quizá no importen.
La fortaleza que compensaba era el conocimiento de las API: el modelo distinguía de forma confiable comportamientos de funciones relevantes para la seguridad, como path.Clean frente a filepath.Clean en Go, y la mayoría de las pruebas de concepto generadas necesitaron pocos ajustes. Como resumió Help Net Security, cada hallazgo sigue necesitando a un revisor que conozca las aplicaciones móviles.
Cómo ejecutarlo en tu propio proyecto
Los flujos de tareas están en el repositorio seclab-taskflows, preparados para lanzarse en un Codespace; ./scripts/audit/run_mobile.sh myorg/myrepo inicia una auditoría que tarda una o dos horas en una base de código mediana y escribe las filas marcadas en una columna has_vulnerability de SQLite. Requiere una licencia de Copilot y consume solicitudes de modelos premium, y GitHub advierte que la factura de tokens no es trivial. Es la contraparte constructiva de una tendencia que cubrimos desde el otro lado: atacantes que ejecutan agentes para reescribir su malware hasta que los escáneres dejan de detectarlo.
FAQ Preguntas frecuentes
¿El agente de seguridad de IA de GitHub es gratuito?
El Taskflow Agent y los flujos de tareas de ejemplo son de código abierto, pero ejecutarlos no sale gratis en la práctica. Hace falta una licencia de GitHub Copilot y una sola auditoría emite un gran número de solicitudes de modelos premium, algo que GitHub señala de forma explícita como un costo relevante en repositorios grandes.
¿Se divulgaron las vulnerabilidades de OsmAnd y Wikipedia?
Sí. Ambas se reportaron por el proceso habitual y se describieron públicamente solo después de la divulgación. El Security Lab de GitHub publica el resto de los 24 hallazgos en su página de avisos a medida que cada uno se libera.
¿Puede un agente de IA reemplazar a un revisor de seguridad humano?
Con esta evidencia, no. El agente generó pistas útiles y pruebas de concepto funcionales, pero sobrerreportó problemas de baja gravedad y calificó mal el impacto donde había factores mitigantes, así que un investigador familiarizado con la plataforma debe validar cada hallazgo.






