El comando /copy de Claude Code dejaba las respuestas en un archivo temporal legible por todos
Un aviso de junio de 2026 muestra que el comando /copy de Claude Code escribía la salida de la conversación en una ruta /tmp predecible y legible por todos — un fallo clásico de archivo temporal, sumado a una sobrescritura por enlace simbólico. Corregido en 2.1.128.
¿Qué es esto?
El 25 de junio de 2026, un aviso de seguridad (GHSA-4vp2-6q8c-pvq2) describió un fallo local en Claude Code, el agente de programación por línea de comandos de Anthropic. El comando /copy — que copia la última respuesta del asistente al portapapeles — escribía primero esa respuesta en una ruta fija del disco: /tmp/claude/response.md. El archivo se creaba legible por todos (modo 0644) dentro de un directorio transitable por todos (0755), sin aislamiento por usuario, sin nombre aleatorio y sin protección frente a enlaces simbólicos.
La consecuencia es un problema clásico de los equipos multiusuario, trasladado a una herramienta de IA. En un host compartido, cualquier otro usuario local podía leer ese archivo — y la respuesta del asistente contiene con frecuencia secretos, claves de API, tokens o código propietario pegado en la conversación. El fallo se corrigió en la versión 2.1.128, publicada a finales de junio de 2026, y afecta a todas las versiones desde la 2.1.59 hasta ese parche. Fue reportado por un investigador externo a través del programa de divulgación coordinada de Anthropic.
Cómo funciona
Aquí no hay ningún exploit novedoso, y ese es precisamente el punto. El fallo reside en dos reglas de manejo de archivos con décadas de antigüedad que la funcionalidad omitió.
Comportamiento Lo que hacía /copy Por qué es inseguro
---------------------------- ------------------------- -----------------------------
Elección de la ruta /tmp/claude/response.md Predecible — cualquier usuario
codificada en duro local sabe dónde leer / plantar
Permisos del archivo 0644 (legible por todos) Otros usuarios leen el contenido
Permisos del directorio 0755 (transitable) Otros entran y listan
Manejo de enlaces ninguno Sigue el enlace de un atacante
Aislamiento por UID ninguno Todos comparten una sola ruta
De ello se derivan dos riesgos distintos. El primero es la divulgación: al ser el archivo legible por todos, un usuario local sin privilegios puede simplemente leer la última respuesta de un usuario privilegiado que ejecutó /copy. El segundo es una escritura por enlace simbólico: al ser la ruta estática y predecible, un usuario local puede crear de antemano el directorio y plantar un enlace simbólico en el nombre de archivo esperado apuntando a otro archivo del disco. Cuando el proceso privilegiado escribe después la respuesta, sigue el enlace y sobrescribe el objetivo elegido por el atacante con el texto de la respuesta. Ambos requieren un segundo usuario sin privilegios en la misma máquina y un usuario privilegiado que invoque realmente el comando — por lo que se trata de un problema local y multiinquilino, no remoto. Las clases de debilidad son las conocidas CWE-377 (archivo temporal inseguro), CWE-59 (seguimiento de enlaces) y CWE-200 (exposición de información).
Por qué importa
Los asistentes de programación con IA se adoptan más rápido de lo que se acumula su historial de seguridad, y resulta tentador centrarse únicamente en los modos de fallo exóticos — inyección de prompts, envenenamiento de herramientas, evasión de sandbox. Este fallo es un correctivo útil: las primitivas de seguridad anteriores a la IA siguen aplicándose, y una CLI que se ejecuta en portátiles de desarrolladores, runners de integración continua, hosts bastión y servidores de compilación compartidos hereda cada trampa clásica de escalada local que las herramientas Unix ordinarias tardaron treinta años en evitar.
El alcance del impacto depende de dónde se ejecuta la herramienta. En un portátil de un solo usuario, el riesgo práctico es bajo. En un servidor de compilación compartido, un host de salto multiusuario o una imagen de contenedor donde coexisten varias identidades de servicio, un archivo legible por todos que contiene en claro el texto de una respuesta del asistente es una fuga de credenciales a punto de ocurrir — y la variante por enlace simbólico convierte un problema de lectura en una primitiva de escritura limitada. También se combina mal con la oleada más amplia de hallazgos de exposición local de Claude Code de este ciclo, incluido un problema anterior en el que la herramienta Read alcanzaba el entorno del runner en CI. Los archivos temporales que escriben los agentes forman parte de la superficie de ataque, igual que lo ha sido el manejo de enlaces simbólicos en los flujos de aprobación.
Defensas
La corrección principal es actualizar; el resto es higiene que se generaliza a cualquier CLI de IA que ejecute.
- Actualice Claude Code a 2.1.128 o posterior. Los usuarios con actualización automática ya la han recibido; verifique con
claude --versiony fije un mínimo en las instalaciones gestionadas. - Trate los hosts compartidos como hostiles para las herramientas de IA. Prefiera máquinas por usuario o sandboxes por UID. En sistemas multiusuario, evite los comandos del asistente que materializan respuestas en disco salvo que controle el umask y el directorio.
- Endurezca el manejo de temporales a nivel de SO. Active
fs.protected_symlinks=1(por defecto en Linux moderno) para impedir que los procesos sigan enlaces hacia directorios que no poseen; use un directorio temporal por usuario medianteXDG_RUNTIME_DIRo unTMPDIRprivado en lugar de un subárbol/tmpcompartido. - Para quienes construyen herramientas: cree los archivos temporales de forma segura. Use API de tipo
mkstemp(nombre aleatorio,O_EXCL, modo0600), escriba en un directorio por UID y nunca en una ruta compartida fija. Prefiera transferir al portapapeles en memoria antes que pasar por disco. - Escanee su árbol de dependencias. Este fallo se rastrea en las bases de vulnerabilidades contra el paquete npm
@anthropic-ai/claude-code; las herramientas de dependency-scanning y SCA marcarán ahora las versiones afectadas, así que integre los paquetes de CLI de IA en el mismo pipeline que el resto. - Rote todo lo que haya podido pasar por el archivo. Si
/copyse ejecutó en una máquina compartida con una versión vulnerable instalada, considere potencialmente expuestos los secretos que aparecieron en esas respuestas y renuévelos.
Estado
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Aviso de seguridad | GHSA-4vp2-6q8c-pvq2 | 2026-06-25 | Archivo temporal inseguro + escritura por enlace en /copy |
| Registro CVE | CVE-2026-46406 (NVD) | 2026-06 | CVSS 3.1 6.1 (medio); CWE-377, CWE-59, CWE-200 |
| Versiones afectadas | GitLab Advisory DB | — | 2.1.59 hasta, pero sin incluir, la 2.1.128 |
| Versión corregida | Claude Code 2.1.128 | 2026-06-29 | Actualización automática desplegada; los updaters manuales deben migrar |
La lección no es que las herramientas de programación con IA sean inseguras de forma singular — es que son software que se ejecuta en máquinas reales, y las partes aburridas de la seguridad del software no dejaron de aplicarse cuando la herramienta aprendió a escribir código. Rutas temporales predecibles, modos legibles por todos y enlaces simbólicos sin protección son exactamente los errores que una CLI madura nunca debería publicar, haga lo que haga con un modelo de lenguaje por debajo.
Sources
- → https://github.com/anthropics/claude-code/security/advisories/GHSA-4vp2-6q8c-pvq2
- → https://nvd.nist.gov/vuln/detail/CVE-2026-46406
- → https://advisories.gitlab.com/npm/@anthropic-ai/claude-code/CVE-2026-46406/
- → https://pulse.adyog.com/insights/claude-code-28-cves-ai-coding-tools-attack-surface-cve-2026-46406