sistema: OPERATIVO
← volver a todos los hacks
AGENTS MEDIUM NEW

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.

2026-07-20 // 6 min affects: claude-code

¿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.

  1. Actualice Claude Code a 2.1.128 o posterior. Los usuarios con actualización automática ya la han recibido; verifique con claude --version y fije un mínimo en las instalaciones gestionadas.
  2. 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.
  3. 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 mediante XDG_RUNTIME_DIR o un TMPDIR privado en lugar de un subárbol /tmp compartido.
  4. Para quienes construyen herramientas: cree los archivos temporales de forma segura. Use API de tipo mkstemp (nombre aleatorio, O_EXCL, modo 0600), escriba en un directorio por UID y nunca en una ruta compartida fija. Prefiera transferir al portapapeles en memoria antes que pasar por disco.
  5. 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.
  6. Rote todo lo que haya podido pasar por el archivo. Si /copy se 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

ElementoReferenciaFechaNotas
Aviso de seguridadGHSA-4vp2-6q8c-pvq22026-06-25Archivo temporal inseguro + escritura por enlace en /copy
Registro CVECVE-2026-46406 (NVD)2026-06CVSS 3.1 6.1 (medio); CWE-377, CWE-59, CWE-200
Versiones afectadasGitLab Advisory DB2.1.59 hasta, pero sin incluir, la 2.1.128
Versión corregidaClaude Code 2.1.1282026-06-29Actualizació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