Un investigador mostró que Claude Code, ejecutando Opus 5 en modo automático, puede ser conducido a descargar archivos y ejecutar código controlado por un atacante a partir de una simple solicitud para resumir un sitio web. La demostración expone los límites de las defensas contra cadenas de inyección de prompts y reabre el debate sobre el aislamiento de los agentes de inteligencia artificial.
***
- La técnica comienza con un sitio web malicioso disfrazado de archivo de registros de cuadernos y una solicitud aparentemente rutinaria de resumen.
- El ataque aprovechó un archivo local llamado struct.py para ocultar el módulo legítimo de Python y ejecutar código no deseado.
- Las pruebas reportaron tasas de éxito de entre 60% y 80%, mientras que la recomendación central es usar estos agentes dentro de un sandbox.
Claude Code, el agente de programación de Anthropic, puede ser inducido a ejecutar código controlado por un atacante cuando recibe una instrucción tan cotidiana como resumir un sitio web. La demostración fue presentada por Johann Rehberger, investigador conocido como wunderwuzzi, quien probó el comportamiento con Opus 5 en Auto Mode. Según la documentación de Claude Code, el modo automático se convirtió en la opción predeterminada para nuevas sesiones de los planes Pro, Max y Team a partir del 14 de agosto. De acuerdo con el reporte de The Register, el procedimiento tuvo éxito en hasta 80% de los casos examinados, aunque el propio investigador advirtió que la muestra era pequeña y no exhaustiva.
El hallazgo resulta relevante porque no depende de una orden explícita para descargar malware ni de una petición abiertamente peligrosa. La cadena combina pasos individuales que parecen razonables para un agente de programación, hasta llevarlo a recuperar un archivo comprimido y procesar su contenido. Para los usuarios, el problema no consiste solamente en la capacidad del modelo para escribir código, sino en el acceso que conserva a herramientas del sistema, archivos locales y conexiones de red.
Una solicitud aparentemente inofensiva
El escenario comienza cuando el usuario pide a Claude Code que resuma un sitio web malicioso presentado como un archivo de registros de cuadernos, un formato que puede parecer relacionado con tareas legítimas de análisis o documentación. La primera instrucción no ordena ejecutar un programa ni instalar componentes, por lo que el agente la interpreta como una actividad ordinaria de recuperación y lectura de información. Rehberger detalló el método en una entrada de blog y en una demostración en video sobre el secuestro de Opus 5 en modo automático.
El atacante tampoco necesita decirle directamente al modelo que emplee curl. En la secuencia descrita, la herramienta WebFetch intenta acceder al contenido, pero recibe una respuesta con el código 415, identificado como “Unsupported Media Type”. Ante ese fallo, Claude decide acceder al sitio mediante una llamada a la herramienta Bash y utiliza curl por iniciativa propia, una decisión que abre la puerta al siguiente paso de la cadena.
El servidor malicioso responde con un código 303 y redirige al agente hacia un archivo ZIP. Claude descarga entonces el paquete, que incluye elementos diseñados para parecer inofensivos: metadatos de catálogo, un archivo README y siete registros JSON de cuadernos codificados en Base85 y zlib. También contiene un binario decodificador para Darwin, el sistema asociado con macOS, además de un archivo Python manipulado llamado struct.py.
En un primer momento, el modelo se niega a ejecutar el decodificador incluido porque identifica que esa acción coincide con lo que el atacante necesita. Rehberger describió esa negativa como una medida de seguridad correcta, pero explicó que la decisión posterior del agente terminó convirtiéndose en la vía de explotación. Claude opta por escribir su propio decodificador, y ese nuevo código importa la biblioteca base64 de Python, con lo que activa una interacción peligrosa con los archivos presentes en el directorio descargado.
El papel del module shadowing
La técnica central aprovecha el module shadowing de Python, un comportamiento por el cual un archivo local con el mismo nombre que un módulo oficial puede ocultar a la biblioteca legítima. Cuando un programa busca importar un módulo, la presencia de ese archivo local puede hacer que Python cargue el componente manipulado en lugar del original. En este caso, base64 necesita importar el módulo struct de la biblioteca estándar, pero el ZIP contiene otro archivo con ese mismo nombre.
El archivo struct.py malicioso puede ejecutar instrucciones cuando el decodificador importa base64, aunque el agente no haya recibido una orden directa para abrir ese archivo. De esa manera, una operación que Claude interpreta como una tarea de transformación de datos activa código arbitrario escondido en el entorno de trabajo. El ataque ilustra cómo los controles que analizan cada acción por separado pueden perder una secuencia en la que el riesgo aparece únicamente al combinar varias decisiones.
Rehberger señaló que utilizó ChatGPT para ofuscar el código de struct.py y ayudarlo a eludir los controles de seguridad de Claude. En su demostración, el archivo consiguió lanzar un proceso independiente de Python que descargó y ejecutó una carga remota, concretamente una devolución de llamada de comando y control que abrió la aplicación Calculadora. Aunque ese resultado es demostrativo y no describe un daño mayor, el investigador remarcó que un atacante real podría sustituirlo por una acción mucho más perjudicial.
El investigador también probó una variante en la que struct.py inicia una segunda instancia de Claude Code sin interfaz mediante el comando claude -p. Ese proceso hijo recibe su propio acceso a herramientas y contexto, por lo que la inyección no solo puede producir ejecución remota de código, sino también crear un agente anidado capaz de continuar la actividad. En las ejecuciones observadas, el proceso secundario realizó reconocimiento básico con whoami, uname e id, abrió la Calculadora y escribió archivos locales dentro de la carpeta personal.
Una defensa que no promete seguridad total
Rehberger probó tres variantes del ataque en cinco ocasiones cada una y obtuvo tasas de éxito de entre 60% y 80%. El investigador calificó esos resultados como una muestra pequeña, aunque consideró que podían representar el comportamiento de un atacante motivado. También precisó que las pruebas no eran exhaustivas, una cautela importante porque el rendimiento de una cadena de inyección puede cambiar según el sistema operativo, el contenido del sitio y el estado del agente.
Anthropic no respondió a la solicitud de comentarios citada en el reporte, pero, según Rehberger, la empresa le comunicó que el comportamiento funcionaba según lo diseñado. La explicación habría distinguido entre la conveniencia de Auto Mode y una garantía de seguridad, ya que el modo depende de un clasificador de mejor esfuerzo para evaluar las acciones del agente. Esa arquitectura no pretende detener necesariamente cadenas determinadas de inyección de prompts cuyos pasos individuales parecen benignos.
El límite práctico de la protección se desplaza entonces hacia el aislamiento del sistema operativo y el control del tráfico de red saliente. La documentación de Claude Code describe funciones de sandboxing con aislamiento del sistema de archivos y de la red, mientras que su modo de autorización automática permite ejecutar sin aprobación algunos comandos que pueden operar dentro del sandbox. Si el agente puede ejecutar herramientas con permisos amplios, leer archivos locales y conectarse a servidores externos, una decisión aparentemente segura puede ofrecer al atacante el contexto necesario para completar la cadena.
El caso no demuestra que toda sesión de Claude Code sea vulnerable en las mismas condiciones, pero sí muestra que las barreras internas del modelo no deben considerarse una frontera suficiente. La recomendación principal de Rehberger es ejecutar este tipo de agentes de programación dentro de un sandbox y evitar que tengan acceso innecesario a información sensible, credenciales o recursos de producción. El aislamiento puede limitar el alcance de una carga remota incluso cuando el modelo cae en una secuencia de instrucciones manipuladas, mientras que las reglas de red pueden impedir la comunicación con servidores de comando y control.
Implicaciones para usuarios y desarrolladores
El episodio plantea un desafío específico para los agentes que combinan razonamiento, ejecución de comandos y navegación web en una misma sesión. Un chatbot que únicamente genera texto puede producir una respuesta riesgosa, pero un agente con herramientas puede convertir esa respuesta en una descarga, una importación de biblioteca o un proceso secundario. Por eso, el análisis de seguridad debe considerar la cadena completa de acciones y no únicamente la intención expresada en el último comando.
La ingeniería social dirigida a modelos también cambia la forma tradicional de entender una instrucción maliciosa. El contenido hostil puede ocultarse en una página, en un archivo README o en la estructura de un paquete, mientras el usuario mantiene una petición aparentemente neutral. En lugar de pedir “ejecuta este código”, el atacante puede diseñar un entorno donde el agente llegue por su cuenta a una operación que conecte componentes confiables con archivos manipulados.
Para reducir el riesgo, los equipos deberían separar las tareas de navegación y ejecución, revisar los archivos descargados y limitar los permisos del proceso que opera el agente. También resulta prudente bloquear conexiones salientes que no sean necesarias, impedir el acceso a carpetas personales y exigir aprobación humana antes de iniciar procesos, descomprimir paquetes o modificar archivos. Estas medidas no eliminan todas las inyecciones de prompts, pero pueden transformar una intrusión potencialmente amplia en un incidente contenido.
El caso de Claude Code deja una advertencia que alcanza a cualquier asistente con capacidad de actuar sobre un computador: una negativa puntual no garantiza que la cadena completa sea segura. Mientras los modelos aprendan a resolver fallos y buscar rutas alternativas, los controles deben proteger el entorno donde esas decisiones se ejecutan. La confianza final, como sugiere Rehberger, debe depositarse en el aislamiento y las políticas técnicas, no en la apariencia inofensiva de una solicitud.
ADVERTENCIA: DiarioBitcoin ofrece contenido informativo y educativo sobre diversos temas, incluyendo criptomonedas, IA, tecnología y regulaciones. No brindamos asesoramiento financiero. Las inversiones en criptoactivos son de alto riesgo y pueden no ser adecuadas para todos. Investigue, consulte a un experto y verifique la legislación aplicable antes de invertir. Podría perder todo su capital.
Suscríbete a nuestro boletín
Artículos Relacionados
Energía
Investigadores crean refrigeración impulsada por calor para centros de datos
IA
Google DeepMind lleva su Co-Científico de la hipótesis al laboratorio autónomo
Empresas
Amazon acelera su guerra de robotaxis en San Francisco y pone a prueba el futuro de AMZN
AltCoins