El agente de auditoría de IA de GitHub encontró 24 fallos en Android, y no dejó de equivocarse al medir su gravedad

Una fuga silenciosa de ubicación en OsmAnd y un secuestro de cuenta de Wikipedia con un solo toque salieron de flujos de tareas que cualquier desarrollador puede ejecutar en su propio repositorio

|5 min de lectura0
Source code on a developer's screen, the material GitHub Security Lab's open-source taskflow agent audits to surface Android vulnerabilities
Source code on a developer's screen, the material GitHub Security Lab's open-source taskflow agent audits to surface Android vulnerabilities

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.

  1. MapActivity, la pantalla que maneja los deeplinks y la importación de ajustes, está exportada: cualquier otra aplicación del dispositivo puede alcanzarla.
  2. Su ruta de importación lee extras del intent como silent_import, replace y export_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.
  3. 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.
  4. 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.

¿Qué te parece este artículo?

SJ
Cargando...

Artículos relacionados

Vercel desactivó AVIF en toda su plataforma por un error corregido hace un año
Developer Tools

Vercel desactivó AVIF en toda su plataforma por un error corregido hace un año

Vercel rastreó un RCE reportado en Next.js hasta libheif, desactivó AVIF en toda su plataforma el 13 de agosto y coordinó los arreglos en sharp, libvips y libheif para el 25 de agosto.

Seung Junghace 11 días
ZCode empaquetaba 42.411 archivos por instantánea y solo Z.ai podía descifrarlos
Developer Tools

ZCode empaquetaba 42.411 archivos por instantánea y solo Z.ai podía descifrarlos

Un informe de ingeniería inversa halló que ZCode, de Z.ai, enviaba historiales de Git completos a Alibaba Cloud cifrados de un modo que solo sus servidores podían abrir.

Seung Junghace 10 días
Meta libera Astryx, un sistema de diseño en React que los agentes pueden consultar
Developer Tools

Meta libera Astryx, un sistema de diseño en React que los agentes pueden consultar

Meta publicó Astryx en junio como beta pública bajo licencia MIT, un sistema de diseño en React que maduró durante ocho años dentro del monorepo interno de la compañía.

Seung Junghace 16 días
Unos investigadores llegaron al repositorio interno de OpenAI por un fallo de imágenes en un foro
Developer Tools

Unos investigadores llegaron al repositorio interno de OpenAI por un fallo de imágenes en un foro

Hacktron AI encadenó un desbordamiento en libheif con una falla del SSO de OpenAI para alcanzar cuentas de Codex de empleados y el monorepo openai/openai. Ambos fallos ya están corregidos.

Seung Junghace 11 días
832.378 líneas de Rust en 14,5 semanas: una reescritura dirigida por agentes
Developer Tools

832.378 líneas de Rust en 14,5 semanas: una reescritura dirigida por agentes

GitHub convirtió 430.000 líneas de TypeScript en 832.378 líneas de Rust en 14,5 semanas con agentes de programación. La memoria cayó de 1.383MB a 126MB.

Seung Junghace 11 días
El récord de 966 fallos parcheados por Microsoft traslada el cuello de botella a los defensores
Developer Tools

El récord de 966 fallos parcheados por Microsoft traslada el cuello de botella a los defensores

Microsoft corrigió 966 vulnerabilidades en septiembre y su total de 2026 roza las 2.750. Los equipos de seguridad dicen que lo difícil ya no es descubrir, sino priorizar.

Seung Junghace 13 días