Una falla en AWS Kiro permitió que una página web maliciosa reescribiera su configuración y ejecutara código

Vulnerabilidad en Kiro permitía elusión del paso de aprobación

Una falla en Kiro, el agente IDE de AWS, permitía que una página web con texto oculto modificara su archivo de configuración y ejecutara código arbitrario en la máquina del desarrollador, sin que el paso de aprobación pudiera detenerlo. Investigadores de Intezer, en colaboración con Kodem Security, descubrieron que una solicitud tan simple como pedirle a Kiro que resumiera una página podía conducir a la ejecución remota de código. AWS ha corregido el problema, y no se le ha asignado un CVE.

El modelo de seguridad de Kiro se basa en que un humano haga clic en "permitir". El agente puede ejecutar comandos de shell, obtener URLs y editar archivos, y el diseño asume que un desarrollador revisa cualquier acción riesgosa antes de que ocurra. Ese paso de aprobación es la frontera de seguridad, y la falla permitía que un atacante lo eludiera sin que el desarrollador tuviera opción.

El punto débil era el archivo que le indica a Kiro qué herramientas externas cargar. Kiro lee su lista de servidores del Protocolo de Contexto de Modelo (MCP) y el comando exacto para iniciar cada uno desde ~/.kiro/settings/mcp.json. Cuando ese archivo cambia, Kiro lo recarga y ejecuta lo que describe, en el host, con los privilegios del desarrollador. Cualquiera que pudiera influir en el contenido de ese archivo podía registrar un servidor cuyo comando de inicio fuera código arbitrario, y se ejecutaría en el momento en que Kiro lo recargara.

Cómo funcionaba el ataque

Introducir texto en el contexto de Kiro es fácil. El agente obtiene contenido externo cada vez que un desarrollador le pide que obtenga una URL, lea documentación o busque en la web. La prueba de concepto de Intezer colocó sus instrucciones en texto blanco de un píxel (color:#fff;font-size:1px) en una página de documentación de API por lo demás normal.

El desarrollador ve una referencia de API limpia. Kiro lee el bloque oculto como una tarea de configuración, escribe el servidor malicioso en mcp.json y lo recarga. En segundos, el servidor engañoso se inicia y el código del atacante se ejecuta. En la demostración de Intezer, el payload solo enviaba a casa el nombre de host, nombre de usuario y plataforma de la máquina cada diez segundos, suficiente para probar la ejecución. El mismo primitivo podía ejecutar cualquier comando disponible para el desarrollador, suficiente para robar credenciales y código fuente, plantar persistencia o moverse lateralmente a sistemas internos.

Los investigadores mantuvieron su callback apuntando a localhost para no exponer a usuarios reales de Kiro, y señalan que el ataque no es perfectamente fiable: el modelo es no determinista y puede resumir la página e ignorar el bloque oculto. En sus pruebas, funcionó en uno o dos intentos. Un éxito es suficiente. Kiro, en algunos casos, mostraba una ventana emergente indicando que la configuración MCP había cambiado y solicitando aprobación. No hacía diferencia. La configuración se recargaba independientemente de lo que el desarrollador hiciera clic, por lo que la advertencia no ofrecía protección real. La única acción que el desarrollador aprobaba realmente era obtener una URL.

Kiro ya había tenido este problema antes

Un agente capaz de escribir el archivo que gobierna lo que se le permite ejecutar ya había surgido en Kiro antes. El día del lanzamiento de Kiro en julio de 2025, Johann Rehberger de Embrace The Red mostró el mismo movimiento de escritura a ejecución en mcp.json: una inyección de prompt colocaba código personalizado en un archivo de configuración MCP y lo ejecutaba en el momento en que el archivo se guardaba. También señaló una segunda ruta: escribir en .vscode/settings.json para permitir comandos de shell. La respuesta de AWS, Kiro 0.1.42, agregó una solicitud de aprobación para esas escrituras, pero solo en modo Supervisado. El modo Autopilot predeterminado seguía escribiendo el archivo por sí solo, y ese es el modo que utilizó la cadena de Intezer en 2026. Tampoco se emitió un CVE entonces.

Otros encontraron versiones vecinas de la misma clase. Cymulate reportó que Kiro ejecutaba automáticamente código escrito en .vscode/tasks.json al abrir una carpeta. AWS le asignó CVE-2026-10591 (8.8 en CVSS 3.1, 8.6 en CVSS 4.0) y lo corrigió en la serie 0.11. La cadena mcp.json de Intezer aún estaba activa en las versiones 0.9.2 (macOS) y 0.10.16 (Ubuntu) cuando la compañía la reportó en febrero de 2026, y se confirmó corregida en v0.11.130.

La respuesta de AWS: rutas protegidas

La respuesta de AWS fue dejar de confiar en el juicio del modelo sobre estos archivos y mover la verificación a la plataforma. Kiro ahora marca mcp.json, .vscode/tasks.json, el directorio .git y otros archivos sensibles como rutas protegidas, cada una requiriendo aprobación explícita antes de una escritura. Su propia documentación lo señala directamente: "El modo supervisado es un flujo de trabajo de revisión de código, no un control de seguridad". La versión 1.0 que siguió se apoya más en el mismo principio, con un modelo de permisos basado en capacidades que solicita consentimiento para cualquier cosa que el desarrollador no haya permitido ya. Esa combinación cierra la ruta que tomó Intezer: Intezer confirmó que el ataque fallaba en 0.11.130 y, a diferencia de la corrección de 2025, la verificación de rutas protegidas funciona tanto en modo Autopilot como en Supervisado.

Reporte y corrección

Intezer reportó la falla a través de HackerOne el 11 de febrero de 2026, y para el 3 de abril AWS dijo que la corrección se había enviado en su última versión, aunque nunca nombró la versión; los investigadores lo confirmaron ellos mismos en v0.11.130. No se ha asignado ningún CVE: The Hacker News no encontró ninguno para el hallazgo en la Base de Datos Nacional de Vulnerabilidades al 21 de julio de 2026, y AWS no publicó una lista completa de las versiones afectadas. Intezer no reportó explotación en la naturaleza, y sus pruebas cubrieron Kiro IDE; no estableció si las compilaciones separadas de Kiro CLI o Web compartían la falla. Las compilaciones actuales están en la línea 1.0.x, con 1.0.165 listada como la más reciente al 21 de julio de 2026, y cualquiera que tenga una versión anterior debería actualizar desde la página de descargas de Kiro. The Hacker News se ha comunicado con AWS para confirmar las versiones de Kiro afectadas y por qué no se asignó un CVE, y actualizará esta historia con cualquier respuesta.

Lecciones aprendidas

En aproximadamente un año, tres esfuerzos de investigación separados encontraron la misma forma de error en Kiro: un agente editando silenciosamente los archivos que deciden lo que se le permite ejecutar. Kiro no está solo: en diciembre de 2025, los investigadores catalogaron más de 30 fallos en herramientas de codificación de IA, incluyendo Cursor y Copilot, todas convirtiendo características legítimas del editor en rutas de inyección de prompt para ejecución de código o robo de datos. Las correcciones actuales apuntan a la misma lección: el control que funciona reside en la plataforma, aplicado en todos los modos y fuera de cualquier cosa que el modelo pueda ser instruido a cambiar. A medida que más del flujo de trabajo de desarrollo se mueve a agentes que leen la web abierta, un humano en el bucle solo funciona como control si se le muestra el paso que importa, y la plataforma mantiene la línea incluso después de que el modelo haya sido completamente convencido de cruzarla.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *