Investigadores de Intezer, en colaboración con Kodem Security, descubrieron en la IDE basada en agentes AWS Kiro una cadena de ataque que, mediante texto oculto en una página web normal, permitía lograr la ejecución remota de código arbitrario en la máquina del desarrollador. El ataque aprovechaba la capacidad del agente para sobrescribir el archivo de configuración de los servidores Model Context Protocol sin una aprobación real del usuario. AWS ha corregido el problema, pero no se ha asignado un CVE independiente para esta vulnerabilidad. Todos los usuarios de Kiro con versiones inferiores a la 0.11.130 deben actualizar de inmediato a la versión estable actual 1.0.x desde la página oficial de descargas.
Mecanismo de ataque: de la página web a la ejecución de código
La arquitectura de seguridad de Kiro se basaba en un modelo de «humano en el bucle»: el agente podía ejecutar comandos de shell, cargar URL y editar archivos, pero se suponía que el desarrollador aprobaba cada acción de riesgo. La vulnerabilidad permitía eludir por completo este mecanismo de control.
Según los investigadores, el eslabón clave de la cadena era el archivo ~/.kiro/settings/mcp.json, que define la lista de servidores Model Context Protocol y los comandos para iniciarlos. Cuando se modificaba este archivo, Kiro recargaba automáticamente la configuración y arrancaba los servidores descritos en ella con los privilegios del usuario actual. En el momento del estudio, el agente podía escribir en mcp.json mediante la herramienta integrada fsWrite sin solicitar aprobación.
Para introducir instrucciones maliciosas en el contexto del agente se utilizó una técnica clásica: en el escenario de demostración, las instrucciones se colocaron como texto blanco de un solo píxel (color:#fff;font-size:1px) en una página que externamente parecía una documentación de API normal. El desarrollador veía una página de referencia limpia, mientras que el agente interpretaba el bloque oculto como una tarea de configuración, escribía el servidor malicioso en mcp.json y recargaba la configuración. En cuestión de segundos se ponía en marcha un servidor MCP falso que ejecutaba el código del atacante.
Según los investigadores, en la demostración la carga útil enviaba cada diez segundos al servidor de callback el nombre del host, el nombre de usuario y la plataforma, suficiente para confirmar que se estaba ejecutando. El mismo primitivo permitía ejecutar cualquier comando accesible para el desarrollador: robar credenciales y código fuente, mantener la persistencia en el sistema o escalar el ataque hacia la infraestructura interna.
Es reseñable que, en algunos casos, Kiro mostraba una notificación emergente sobre el cambio de la configuración de MCP y solicitaba aprobación. Sin embargo, según Intezer, la configuración se recargaba independientemente de las acciones del usuario, por lo que el aviso no proporcionaba una protección real. La única acción que el desarrollador aprobaba en la práctica era la carga del URL.
Los investigadores señalan que el ataque no es absolutamente fiable: el modelo es no determinista y puede ignorar el bloque oculto, limitándose a resumir el contenido de la página. No obstante, en las pruebas el ataque se activaba en una o dos tentativas. La llamada de retorno se enviaba a localhost, por lo que los usuarios reales no se vieron afectados.
Cronología: tres investigaciones, un mismo problema de arquitectura
La vulnerabilidad descubierta por Intezer no fue el primer caso de explotación de este patrón de arquitectura en Kiro. El mismo día del lanzamiento del producto, en julio de 2025, Johann Rehberger de Embrace The Red mostró un vector similar: una prompt injection escribía código en el archivo de configuración de MCP y lo ejecutaba al guardarse. También señaló una segunda vía: escribir en .vscode/settings.json para añadir comandos de shell a la lista de permitidos.
AWS respondió lanzando Kiro 0.1.42, añadiendo una solicitud de aprobación para este tipo de escrituras, pero, según el boletín de seguridad AWS-2025-019, esta protección funcionaba solo en el modo Supervised. El modo Autopilot, que se utiliza por defecto, seguía permitiendo escribir sin aprobación, y fue precisamente el que explotó la cadena de Intezer en 2026.
En paralelo, la empresa Cymulate descubrió una vulnerabilidad relacionada: Kiro ejecutaba automáticamente el código escrito en .vscode/tasks.json al abrir una carpeta. AWS asignó a este problema el identificador CVE-2026-10591 con una puntuación de 8.8 en CVSS 3.1 y 8.6 en CVSS 4.0, y lo solucionó en la rama 0.11, como confirma el boletín de seguridad de AWS.
Según Intezer, la cadena a través de mcp.json seguía siendo explotable en las versiones 0.9.2 (macOS) y 0.10.16 (Ubuntu) en el momento de enviar el informe a través de HackerOne, el 11 de febrero de 2026. Los investigadores confirmaron la corrección en la versión 0.11.130.
Medidas adoptadas y modelo de protección actual
AWS ha pasado de confiar en las decisiones del modelo respecto a archivos sensibles a realizar comprobaciones obligatorias a nivel de plataforma. Según la documentación de seguridad de Kiro, los archivos mcp.json, .vscode/tasks.json, el directorio .git y otras rutas críticas se han clasificado ahora como protegidas y requieren aprobación explícita antes de escribir en ellas.
La documentación indica explícitamente: «Supervised mode is a code review workflow, not a security control»: el modo Supervised es un flujo de trabajo de revisión de código, no un mecanismo de seguridad. La versión Kiro 1.0 implementa un modelo de permisos basado en capacidades, solicitando el consentimiento del usuario para cualquier acción que no se haya autorizado previamente. La protección de las rutas protegidas se aplica en ambos modos, tanto Autopilot como Supervised.
Intezer ha confirmado que el ataque no se reproduce a partir de la versión 0.11.130. No se ha observado explotación de la vulnerabilidad en ataques reales, aunque existe un PoC público. La investigación se centró únicamente en la IDE Kiro; no está determinado si el problema se extiende a Kiro CLI o a la versión web.
Recomendaciones
- Actualice inmediatamente Kiro a la versión 1.0.x más reciente. En el momento de la publicación, la última compilación disponible es la 1.0.165.
- Revise el contenido de
~/.kiro/settings/mcp.jsonen busca de servidores MCP desconocidos o comandos de inicio sospechosos. - No utilice versiones anteriores a la 0.11.130, ya que son vulnerables a la cadena de ataque descrita.
- Limite la carga automática de contenido externo por parte de las IDE basadas en agentes: cada URL que el agente descarga a petición del desarrollador es un posible vector de prompt injection.
- Audite los archivos de configuración (
mcp.json,.vscode/tasks.json,.vscode/settings.json) en los pipelines de CI/CD y durante las revisiones: cualquier cambio inesperado en ellos puede indicar una posible compromisión.
Tres investigaciones independientes en un año han puesto de manifiesto el mismo defecto de arquitectura: un agente capaz de editar los archivos que definen los límites de sus propios privilegios. No es un problema exclusivo de Kiro; se han encontrado clases similares de vulnerabilidades en otros entornos de desarrollo basados en agentes. La lección clave es que un mecanismo de seguridad que el modelo puede sortear manipulando el contexto no es realmente un mecanismo de seguridad. El control debe implementarse a nivel de plataforma, fuera del alcance del agente, y aplicarse en todos los modos de funcionamiento sin excepciones.