Vulnerabilidades de Symlink en GhostApproval Ponen en Riesgo a Agentes de IA

Publicado el

Vulnerabilidades en Asistentes de Codificación de IA

Investigadores de Wiz han identificado fallos críticos en seis populares asistentes de codificación de IA, que podrían permitir a repositorios maliciosos ejecutar código en el ordenador de los desarrolladores. Este problema ha sido denominado GhostApproval y se hizo público el 8 de julio de 2026. Los asistentes afectados son Amazon Q Developer, Claude Code de Anthropic, Augment, Cursor, Google Antigravity y Windsurf.

Mecanismo del Ataque

La vulnerabilidad se basa en una característica antigua de Unix conocida como enlace simbólico o symlink, que los asistentes no comprueban adecuadamente. Un symlink puede redirigir silenciosamente a otro archivo en el disco, lo que significa que escribir en él en realidad modifica el archivo de 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`. Al solicitar al asistente que añada "una línea" a `project_settings.json`, el atacante puede introducir su propia clave SSH disfrazada como configuración inocente.

Una vez que el asistente ejecuta esa acción, si el sistema tiene un servicio SSH, el atacante puede acceder sin necesidad de contraseña. Otra variante del ataque modifica el archivo de inicio del shell, `~/.zshrc`, que se ejecuta la próxima vez que se abra una terminal, eliminando la necesidad de SSH.

Falsos Consentimientos en la Aprobación

Los ataques mediante symlink no son nuevos, pero el verdadero problema radica en cómo los asistentes presentan la información al usuario. En GhostApproval, el cuadro de aprobación muestra información engañosa. Por ejemplo, al probar Claude Code, Wiz observó que el asistente había identificado correctamente el objetivo real, advirtiendo que `project_settings.json` era, en realidad, un archivo de configuración de zsh. Sin embargo, el cuadro de diálogo presentado al desarrollador solo mencionaba el archivo aparentemente inofensivo. Al aceptar, el usuario cree que está editando un archivo local de configuración, pero el cambio se aplica a su archivo de inicio de shell o a sus claves SSH.

Herramientas Afectadas y Estado de las Soluciones

Wiz notificó el problema a los seis proveedores implicados, y el estado actual de las correcciones es el siguiente:

- Amazon Q Developer: Corregido en la versión 1.69.0 (CVE-2026-12958). Actualizar. - Cursor: Corregido en la versión 3.0 (CVE-2026-50549). Actualizar desde el gestor de extensiones. - Google Antigravity: Corregido (CVE pendiente). Actualizar a la versión actual. - Augment: Reconocido; aún sin corrección. No utilizar repositorios no confiables. - Windsurf: Reconocido; aún sin corrección. No utilizar repositorios no confiables. - Claude Code (Anthropic): Disputado; las versiones actuales advierten. Actualizar y leer la advertencia del symlink antes de aceptar.

Anthropic considera que este problema no es un bug, argumentando que el desarrollador eligió confiar en el repositorio. Sin embargo, esta postura plantea una cuestión relevante: ¿hasta dónde deben llegar los agentes de codificación para proteger a los desarrolladores que ya han confiado en un repositorio malicioso?

Recomendaciones de Seguridad

Más allá de la necesidad de parches, existen algunas prácticas que pueden reducir el riesgo, independientemente de la herramienta utilizada. Se sugiere ejecutar el agente con acceso limitado a archivos o dentro de un entorno aislado. También es recomendable revisar el README de un repositorio y los archivos de configuración ocultos antes de permitir que un agente lo configure. Tras trabajar en un repositorio desconocido, es importante verificar los archivos que podrían haber sido objetivos del ataque, como los archivos de inicio del shell y las claves SSH.

La recomendación de Wiz para los desarrolladores de herramientas es clara: resolver el symlink y mostrar el destino real antes de solicitar aprobación, señalar cualquier escritura que afecte a carpetas fuera del proyecto y no modificar el disco hasta que el usuario haya dado su consentimiento explícito.

Fuente

Ver noticia original