Cómo funciona el ataque
El ataque abusa de una antigua función de Unix llamada enlace simbólico (symlink) que los asistentes no verifican. Un symlink apunta silenciosamente a otro archivo en el disco, por lo que escribir en él realmente escribe en el destino. Wiz creó un repositorio malicioso con un symlink llamado project_settings.json que apunta al archivo de inicio de sesión SSH de la víctima (~/.ssh/authorized_keys). El README del repositorio indica al asistente que agregue "una línea" a project_settings.json, que es la clave SSH del atacante disfrazada como una configuración inofensiva.
Al pedir al agente que configure el espacio de trabajo o siga el README, escribe la clave directamente a través del symlink en el archivo de inicio de sesión. Si la máquina ejecuta un servicio SSH accesible, el atacante puede iniciar sesión sin contraseña. Una segunda variante escribe en el archivo de inicio del shell (~/.zshrc), que el shell ejecuta al abrir una terminal, sin necesidad de SSH. No hay evidencia de que se haya utilizado en ataques reales; Wiz lo presenta como investigación.
El cuadro de aprobación muestra información incorrecta
Los trucos con symlinks tienen décadas de antigüedad. El symlink es solo el medio; el verdadero fallo es el cuadro de aprobación. En GhostApproval, ese cuadro miente. Probando Claude Code, Wiz descubrió que el agente ya había identificado el destino real en su razonamiento interno, señalando que project_settings.json era "en realidad un archivo de configuración de zsh". Sin embargo, el cuadro mostrado al desarrollador solo nombraba el archivo inofensivo.
Al hacer clic en Aceptar, el desarrollador cree que edita un archivo de configuración local, pero la escritura alcanza el archivo de inicio del shell o las claves SSH. Wiz llama a esto una evasión del consentimiento informado: el humano sigue en el bucle, pero el bucle le muestra información incorrecta. Algunas herramientas son peores: omiten la verificación por completo. Windsurf escribe el archivo en disco antes de que aparezcan los botones Aceptar y Rechazar, por lo que la solicitud es solo un botón de deshacer y la clave ya está colocada. Augment no muestra ningún diálogo, y Wiz demostró que lee silenciosamente un archivo de credenciales de AWS fuera del proyecto.
Herramientas afectadas
Wiz informó el problema a los seis proveedores. Anthropic rechazó la clasificación, argumentando que el escenario está fuera de su modelo de amenazas: 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 señaló que la advertencia de symlink de Claude Code se lanzó a principios de febrero, antes del informe privado de Wiz, como una mejora rutinaria, no como una corrección. De los seis proveedores, Anthropic es el único que dice que esto no es un error; tres lanzaron parches y dos están trabajando en ellos.
Más allá de los parches, algunos hábitos reducen el riesgo: ejecutar el agente con acceso limitado a archivos o dentro de un contenedor, revisar el README y los archivos de configuración ocultos antes de dejar que un agente configure el repositorio, y verificar los archivos objetivo después de trabajar en un repositorio desconocido: archivo de inicio del shell, claves SSH y configuración de la herramienta de IA. Verificar sus marcas de tiempo con ls -la ~/.zshrc ~/.ssh/authorized_keys muestra si algo cambió mientras el agente estaba activo.
Un fallo compartido, no un error de un solo proveedor
En mayo, Adversa AI publicó SymJack, el mismo patrón de symlink y aprobación contra seis agentes de codificación, incluidos Claude Code, Cursor, GitHub Copilot y Grok Build. Que dos equipos independientes lo encuentren apunta a una debilidad de diseño compartida: estos agentes siguen un symlink usando operaciones de archivo normales, luego solicitan aprobación basada en la ruta que recibieron, no en la ruta donde se escribe realmente.
La superposición llega hasta el CVE. El aviso de Cursor para su error de symlink 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, funcionan como instrucciones que el agente sigue y rutas sobre las que actúa, y moldean lo que muestra el cuadro de aprobación. El boletín de AWS también cubre un fallo separado de Amazon Q, CVE-2026-12957, donde un repositorio envenenado podía cargar automáticamente un archivo de configuración y ejecutar comandos para robar las claves AWS del desarrollador una vez que el espacio de trabajo era confiado.
La técnica exacta de GhostApproval aún está bajo investigación, pero el patrón más amplio ya se está manifestando: repositorios que contienen archivos que dirigen a los agentes de IA hacia comportamientos inseguros. Como informó THN en junio, el gusano Miasma plantó archivos de configuración de agentes de IA en un repositorio de Microsoft Azure para que su carga útil se ejecutara en cuanto el desarrollador abriera el proyecto en Claude Code, Cursor o Gemini. GitHub deshabilitó los 73 repositorios de Microsoft afectados.
"Humano en el bucle" solo protege si el bucle dice la verdad. A medida que estos asistentes obtienen más libertad para leer y escribir archivos por sí mismos, un cuadro de aprobación que nombra el destino incorrecto no es una salvaguarda, sino un lastre, y tratar un repositorio engañoso como un problema puramente del usuario pone el peso en la persona menos capaz de detectar el intercambio.



