Investigadores de Fenómeno descubrió que una falla en seis populares asistentes de codificación de IA permite que un proyecto de código trampa tome silenciosamente el control de la computadora de un desarrollador. El asistente pide permiso para editar un archivo que parece inofensivo, pero la escritura llega a uno sensible.
Las herramientas afectadas son Amazon Q Developer, Claude Code de Anthropic, Augment, Cursor, Google Antigravity y Windsurf. Wiz llama al patrón Aprobación fantasma y lo publicó el 8 de julio.
Tres de los seis han enviado correcciones, dos no, y Anthropic niega que se trate de un error. Las más expuestas son las herramientas que cambian archivos antes de que puedas intervenir.
Cómo funciona el ataque
El ataque abusa de una antigua característica de Unix llamada enlace simbólicoo enlace simbólicoque los asistentes no logran comprobar. Un enlace simbólico apunta silenciosamente a otro archivo en otra parte del disco, por lo que escribir en él en realidad escribe en el destino.
Wiz creó un repositorio malicioso con un enlace simbólico llamado project_settings.json que realmente apunta al archivo de inicio de sesión SSH de la víctima, ~/.ssh/authorized_keys. El archivo README del repositorio le dice al asistente que agregue «una línea» a project_settings.json, y esa línea es la clave SSH del atacante vestida como una configuración inofensiva.
Pídale al agente que «configure el espacio de trabajo» o «siga el archivo README» y escribirá la clave directamente a través del enlace simbólico en el archivo de inicio de sesión. A partir de ahí, si la máquina ejecuta un servicio SSH al que el atacante pueda acceder, podrá iniciar sesión sin contraseña.
Una segunda versión del truco escribe en el archivo de inicio de su shell, ~/.zshrc, que el shell ejecuta la próxima vez que abre una terminal, por lo que no se necesita SSH. No hay señales de que nada de esto haya sido utilizado en ataques reales; Wiz lo presenta como investigación.
El cuadro de aprobación muestra algo incorrecto
Los trucos de enlaces simbólicos tienen décadas de antigüedad. El enlace simbólico es sólo la entrega; el verdadero fracaso es el cuadro de aprobación. En GhostApproval, se encuentra ese cuadro.
Al probar Claude Code, Wiz descubrió que el agente ya había detectado el objetivo real en su propio razonamiento, y señaló que project_settings.json era, en sus palabras, «en realidad un archivo de configuración zsh». Sin embargo, el cuadro mostrado al desarrollador solo mencionaba el archivo inofensivo.
Hace clic en Aceptar, creyendo que está editando un archivo de configuración local, y la escritura llega a su archivo de inicio de shell o a sus claves SSH. Wiz llama a esto un bypass de consentimiento informado: el humano todavía está en el bucle, pero el bucle les muestra algo incorrecto.
Algunas herramientas son peores: saltan la puerta por completo, por lo que nunca hay un momento para intervenir. Windsurf escribe el archivo en el disco antes de que aparezcan los botones Aceptar y Rechazar, por lo que el mensaje es solo un botón deshacer y la clave ya está en su lugar.
Augment no muestra ningún diálogo y Wiz lo demostró en silencio, leyendo un archivo de credencial de AWS que se encontraba fuera del proyecto. Sin embargo, las herramientas que todavía muestran un mensaje no son más seguras; el mensaje simplemente nombra el archivo incorrecto.
¿Qué herramientas se ven afectadas?
Wiz informó del problema a los seis proveedores. Aquí es donde se encuentra cada uno al momento de la publicación:
| Herramienta | Estado | que hacer |
|---|---|---|
| Desarrollador de Amazon Q | Corregido en el servidor de idiomas 1.69.0 (CVE-2026-12958) |
Actualizar. Se instala automáticamente para la mayoría de los usuarios y al volver a cargar el IDE se activa. |
| Cursor | Fijado en v3.0 (CVE-2026-50549) |
Actualización desde el administrador de extensiones. |
| Antigravedad de Google | Fijo (CVE pendiente) | Actualizar a la versión actual. |
| Aumentar | Admitido; aún no hay solución | No apuntes a repositorios en los que no confíes. |
| windsurf | Admitido; aún no hay solución | No apuntes a repositorios en los que no confíes. |
| Código Claude antrópico | Cuestionado; Las versiones actuales advierten. | Actualice y lea la advertencia del enlace simbólico antes de aceptar. |
Anthropic rechazó la clasificación y le dijo a Wiz que el escenario se encuentra «fuera de nuestro modelo de amenaza»: el desarrollador eligió confiar en la carpeta al iniciar la sesión y luego aprobó la edición, por lo que la decisión fue suya.
También dijo que la advertencia de enlace simbólico de Claude Code se envió a principios de febrero, antes del informe privado de Wiz, como un refuerzo de rutina en lugar de una solución, y que un «sin comentarios» anterior era una respuesta automática.
De los seis proveedores, Anthropic es el único que dice que esto no es un error; Se enviaron tres correcciones y dos están trabajando en ellas. Sin embargo, la pregunta que plantea su postura es real, y no solo Anthropic debe responder: ¿hasta dónde debe llegar un agente de codificación para proteger a un desarrollador que ya ha confiado en un repositorio malicioso?
Más allá de los parches, algunos hábitos reducen el riesgo, independientemente de la herramienta que utilice. Ejecute el agente con acceso limitado a archivos o dentro de un entorno limitado o contenedor. Revise el archivo README de un repositorio y los archivos de configuración ocultos antes de permitir que un agente lo «configure».
Y después de trabajar en un repositorio desconocido, verifique los archivos a los que se dirige el ataque, que se encuentran fuera del proyecto y, por lo tanto, no aparecerán en el estado de git: su archivo de inicio de shell, sus claves SSH y la propia configuración de su herramienta de inteligencia artificial. Verificar sus marcas de tiempo, por ejemplo, con ls -la ~/.zshrc ~/.ssh/authorized_keys, muestra si algo cambió mientras el agente se estaba ejecutando.
El consejo de Wiz para los fabricantes de herramientas es breve: resuelva el enlace simbólico y muestre el destino real antes de preguntar, marque cualquier escritura que termine fuera de la carpeta del proyecto y nunca toque el disco hasta que el usuario lo haya aprobado.
Un defecto compartido, no el desliz de un proveedor
En mayo, Adversa AI publicó SymJackel mismo patrón de enlace simbólico y aprobación contra seis agentes de codificación, incluidos Claude Code, Cursor, GitHub Copilot y Grok Build.
Dos equipos independientes descubrieron que esto apunta a una debilidad de diseño compartida, no a un desliz de un proveedor: estos agentes siguen un enlace simbólico utilizando operaciones de archivos ordinarias, luego solicitan aprobación según la ruta que se les entregó, no la ruta en la que llega la escritura.
El solapamiento llega incluso al CVE. El propio aviso de Cursor por su error de enlace simbólico acredita tanto a Wiz como a Cato AI Labs, cuyo trabajo anterior The Hacker News cubrió como DuneSlide.
Los archivos en los que confía un asistente de IA ya no son solo código. Para estos agentes, sirven también como instrucciones que el agente sigue y caminos que sigue, y dan forma a lo que muestra el cuadro de aprobación. El boletín de AWS también cubre una falla separada de Amazon Q, CVE-2026-12957, donde un repositorio envenenado podría cargar automáticamente un archivo de configuración y ejecutar comandos para robar las claves de AWS de un desarrollador una vez que se confiaba en el espacio de trabajo.
La técnica exacta de GhostApproval todavía está bajo investigación, pero el patrón más amplio ya está apareciendo en la naturaleza: repositorios que contienen archivos que dirigen a los agentes de IA a comportamientos inseguros.
Como informó THN en junio, el gusano Miasma colocó archivos de configuración de agentes de IA en un repositorio de Microsoft Azure para que su carga útil se ejecutara en el momento en que un desarrollador abriera el proyecto en Claude Code, Cursor o Gemini. En respuesta, GitHub deshabilitó los 73 repositorios de Microsoft afectados.
«Human in the loop» sólo te protege si el loop dice la verdad. A medida que estos asistentes obtienen más libertad para leer y escribir archivos por su cuenta, un cuadro de aprobación que nombra el destino incorrecto no es una protección sino una responsabilidad, y tratar un repositorio engañoso como un problema puramente del usuario pone el peso en la persona que tiene menos capacidad para ver el intercambio.






