Cómo la función legítima "Code Interpreter" se convirtió en un caballo de Troya para el robo de datos.
Alternativa: "Code Interpreter", función legítima que se transformó en un caballo de Troya para robar datos.

La función integrada en Claude para ejecutar solicitudes de red en el modo Code Interpreter resultó ser un canal para una posible fuga de datos: el autor del análisis describió con detalle cómo la combinación del acceso a la API de archivos de Anthropic y la ejecución de código en un entorno aislado permite enviar archivos ajenos a las cuentas de atacantes. El problema es peligroso porque el exploit utiliza las interfaces oficiales de la plataforma y funciona con la configuración estándar que muchos consideran segura.
La esencia del ataque es que, con el acceso de red habilitado, Code Interpreter puede comunicarse con varios dominios permitidos: este es el modo «solo gestores de paquetes», en el que en la lista blanca figuran servicios como npm, PyPI y api.anthropic.com. El acceso a api.anthropic.com precisamente permite llegar al Files API, una interfaz que permite subir archivos a una cuenta de Anthropic y luego recuperarlos desde la consola o mediante solicitudes de API.
El ataque se desarrolla así: una instrucción maliciosa induce al modelo a guardar en el entorno aislado contenido al que tiene acceso el usuario —por ejemplo, el último chat— en un archivo con una ruta como /mnt/user-data/outputs/hello.md. A continuación, el modelo ejecuta código que invoca el Files API y pasa en el entorno la clave ANTHROPIC_API_KEY. Si la clave pertenece al atacante, el archivo se cargará en su cuenta y quedará accesible desde la consola del agresor. Según la documentación, el tamaño de un archivo puede llegar a 30 MB, y cargas sucesivas permiten robar grandes volúmenes de datos.
El autor del estudio señala que al principio, en el primer intento, el exploit funcionó, pero después el modelo empezó a rechazar instrucciones claramente sospechosas, incluidas líneas con claves expuestas. Los intentos de eludir los filtros mediante codificación no siempre funcionaron; resultó más fiable camuflar las acciones maliciosas entre muchas operaciones inocuas, por ejemplo simples comandos de impresión, lo que redujo la sospecha sobre la ejecución.
Desde el punto de vista del proceso de divulgación de la vulnerabilidad hubo un incidente: el informe se envió a través de HackerOne el 25 de octubre de 2025, pero la solicitud se cerró inicialmente como «fuera de ámbito», al considerar que el problema era de seguridad del modelo y no una vulnerabilidad del producto. Más tarde, el 30 de octubre de 2025, el proveedor confirmó que los escenarios de fuga de datos de este tipo se admitirían para su revisión y reconoció un error en el procedimiento de gestión de los informes de incidentes.
Los riesgos de este vector incluyen la posibilidad de una inyección indirecta de instrucciones a través de documentos u otros archivos de entrada: el modelo puede interpretar ese contenido como comandos, leer datos locales, guardarlos en un archivo y enviarlos mediante la interfaz oficial. Una lógica similar podría funcionar también a través de otros dominios de la lista blanca, si permiten reenviar o guardar archivos de usuarios en cuentas de terceros.
Para reducir la amenaza, el autor y los analistas proponen varias medidas. Por parte del proveedor conviene vincular de forma estricta las llamadas de red desde el entorno aislado a la cuenta del usuario autenticado, de modo que cualquier carga se asocie automáticamente con la cuenta actual y no pueda acabar en cuentas ajenas. Alternativamente, se puede limitar o bloquear por completo el acceso del código ejecutable a las APIs de archivos, implantar una auditoría y filtrado más estrictos de las solicitudes de red en tiempo real con la posibilidad de detener automáticamente la sesión ante un intento de transferencia de datos, y revisar la lista de dominios permitidos teniendo en cuenta efectos secundarios. Para organizaciones y usuarios, la protección práctica pasa por desactivar el acceso de red en Code Interpreter cuando sea posible y utilizar listas de permitidos puntuales solo para los recursos realmente necesarios.
Aparte de la fuga, el canal descrito puede servir para implementar lógica de comando y control: la recepción y ejecución de instrucciones remotas convierte un incidente así no solo en una fuga, sino en un problema de gestión y recuperación tras la compromisión. El autor deliberadamente no publica la carga útil funcional exacta ni ejemplos de claves, para no facilitar la reproducción del ataque.
La conclusión principal sigue siendo sencilla: la expansión de las capacidades de las herramientas de IA aumenta la superficie de ataque, y los permisos para solicitudes de red deben ir acompañados de garantías técnicas estrictas. Los proveedores deben tener en cuenta los escenarios de abuso de sus propias interfaces, y las organizaciones deben revisar y corregir cuidadosamente las configuraciones de acceso antes de permitir que los modelos salgan a la red.