Ir al contenido principal
Cerrar
Seguridad

Claude Code en CI/CD: Agujero Estructural y la Rule of Two

Gabriel Ferraresi· CEO | Tech86June 6, 20265 min
claude codeci/cdprompt injectionseguridadgithub actions

Anthropic puso un agente de IA con acceso a secrets en su pipeline de CI/CD. Microsoft mostró cómo robar todo en dos pasos. No es una hipótesis: es una vulnerabilidad estructural documentada, con proof-of-concept funcional y 50 bypasses en el sistema de permisos. En Tech86 vimos los incidentes de prompt injection en agentes de IA crecer exponencialmente este año. El caso de la GitHub Action de Claude Code es el más revelador porque el problema no es un bug, es el diseño.

Dos caminos, uno sin sandbox

Claude Code tiene dos caminos de ejecución. El Bash tool corre en un sandbox Bubblewrap con limpieza de entorno: la variable CLAUDE_CODE_SUBPROCESS_ENV_SCRUB elimina credenciales del entorno antes de la ejecución. El Read tool, que lee archivos, no tenía sandbox. La llamada es in-process, directa, evadiendo por completo el Bubblewrap.

El resultado: el Read tool accedía a /proc/self/environ y leía ANTHROPIC_API_KEY en texto claro. El sandbox que protegía el Bash era irrelevante para el Read. Anthropic protegió la puerta principal y dejó la ventana abierta.

Pero leer la clave es solo la mitad del problema. Microsoft construyó un payload que derrotó dos defensas simultáneamente.

Los dos pasos de Microsoft: derrotando filtro y scanner

El primer obstáculo: el filtro de Claude rechaza imprimir claves que empiezan con sk-ant-. El payload instruye al modelo: "corta los primeros 7 caracteres de la clave". El LLM obedece, emitiendo la clave sin el prefijo. La salida pasa el filtro porque no contiene el patrón bloqueado.

El segundo obstáculo: el GitHub Secret Scanner enmascara patrones conocidos en el stdout. Pero como el LLM modificó la clave antes de emitirla, eliminando el prefijo, el scanner no la detectó. El texto que llega al log no es una clave válida. El atacante reconstruye la clave completa anteponiendo sk-ant- desde afuera.

Exfiltración vía WebFetch, Bash, GitHub MCP o logs de la Action. Cualquier canal de salida del agente funciona. Microsoft probó que dos capas de defensa, el filtro del modelo y el scanner de la plataforma, son derrotadas cuando el atacante controla lo que el modelo emite.

RyotaK: 50 bypasses y el bot que se volvió admin

El 1 de junio, RyotaK de GMO Flatt Security publicó 50 bypasses en el sistema de permisos de Claude Code. El más impactante: un bot falso con nombre terminado en [bot] evadió la verificación de permiso. La Action confía automáticamente en cualquier GitHub App, sin validación de identidad.

Con ese bypass, exfiltró tokens OIDC y obtuvo un installation token con escritura total en el repositorio. Si el ataque se dirigiera al propio repositorio de Anthropic, envenenaría la Action usada por miles de proyectos. Un supply chain attack a escala, sin tocar un solo paquete npm.

El ejemplo oficial de Anthropic venía con allowed_non_write_users: "*". Muchos lo copiaron. Cualquier usuario sin permiso de escritura tenía acceso total. En febrero, un ataque similar en Cline robó el npm publish token y empujó @openclaw/cli sin autorización. 4 mil desarrolladores afectados en 8 horas. Corregido en la v1.0.94. CVSS 7.8. Bounty de 4.800 dólares, según reportes de la comunidad de seguridad.

Comment and Control: el mismo patrón en tres agentes

Investigadores académicos documentaron en abril el patrón "Comment and Control": el mismo vector de ataque funciona en Claude Code, en Gemini CLI Action y en Copilot Agent. Todos vulnerables.

En el Copilot Agent, comentarios HTML ocultos, invisibles para humanos en la interfaz de GitHub, contenían instrucciones codificadas en base64 que evadieron el secret scanner. Exfiltración vía git push hacia un repositorio controlado por el atacante. El agente lee el comentario, decodifica la instrucción, ejecuta y envía los datos hacia afuera.

Claude Code: CVSS 9.4 Critical, según el reporte del investigador. Anthropic habría rebajado a "None" con un bounty de 100 dólares. Para contexto: Google pagó 1.337 dólares por el mismo tipo de vulnerabilidad en Gemini, según reportes públicos. GitHub pagó 500 por Copilot, según reportes públicos. Anthropic pagó 100 y lo clasificó como inexistente. Rebajar un CVSS 9.4 a "None" con un bounty de 100 dólares envía la señal equivocada a los investigadores y a la industria.

La Agents Rule of Two: el principio que faltaba

Microsoft formuló la "Agents Rule of Two": un workflow de IA nunca debe tener los tres simultáneamente, procesamiento de input no confiable, acceso a secrets vía tools y capacidad de comunicarse externamente. Si dos ya existen, el tercero no puede agregarse.

Esto es fundamental porque el prompt injection no es un bug del modelo: es contexto que el agente fue diseñado para procesar. Los PR titles y los issue comments son datos legítimos del SDLC que el agente necesita leer. El atacante secuestra el contexto dentro de los límites del workflow previsto. No hay patch para "el agente lee lo que debería leer".

Estamos entrando en una era donde el lenguaje natural es código ejecutable, y los inputs no confiables como los GitHub issues deben tratarse como hostiles por defecto. La Rule of Two es el Principle of Least Privilege aplicado a agentes autónomos: si el agente necesita leer issues, no le dé acceso a secrets. Si necesita secrets, no permita comunicación externa. Si necesita comunicarse, no procese input no confiable.

En Tech86 aplicamos este principio en toda integración de IA en CI/CD. Auditamos workflows, aislamos las tools con acceso a credenciales y tratamos todo input del SDLC como no confiable. Si su equipo usa agentes de IA en pipelines sin esa separación, el ataque de Microsoft no es un escenario hipotético, es el próximo incidente.

Continúa en el tema

Segurança de Agentes de IA: Prompt Injection, Worms e Supply Chain →

¿Interesado en esta solución?

Conoce nuestros servicios gestionados e infraestructura.

Conozca Seguridad Ofensiva

Preguntas Frecuentes

Claude Code tiene dos caminos de ejecución: el Bash tool corre en sandbox Bubblewrap con limpieza de entorno, pero el Read tool hace llamada in-process directa sin sandbox. Eso permite leer /proc/self/environ y acceder a ANTHROPIC_API_KEY en texto claro. El sandbox protegió el Bash, pero no protegió el Read.

Paso 1: el filtro de Claude rechaza imprimir claves que empiezan con 'sk-ant-'. El payload instruye al modelo a cortar los primeros 7 caracteres, lavando la salida antes de emitirla. Paso 2: el GitHub Secret Scanner enmascara patrones conocidos, pero como el LLM modificó la clave antes del stdout, el scanner no la detectó. El atacante la reconstruye anteponiendo 'sk-ant-'.

Un workflow de IA nunca debe tener tres capacidades simultáneamente: procesamiento de input no confiable, acceso a secrets vía tools y capacidad de comunicarse externamente. Si dos ya existen en el workflow, el tercero no puede agregarse. Es el equivalente al Principle of Least Privilege para agentes autónomos.

50 bypasses en el sistema de permisos, según la publicación del investigador. Un bot falso con nombre terminado en [bot] evadió la verificación de permiso. La Action confía automáticamente en cualquier GitHub App. Exfiltraba tokens OIDC y obtenía un installation token con escritura total en el repo. Si se apuntara al repo de Anthropic, envenenaría la Action usada por miles de proyectos.

Investigadores académicos (abril de 2026) documentaron el mismo patrón de ataque en tres agentes: Claude Code, Gemini CLI Action y Copilot Agent. En el Copilot Agent, comentarios HTML ocultos, invisibles para humanos, con base64 evadieron el secret scanner. Exfiltración vía git push. Claude Code: CVSS 9.4 Critical, según el reporte del investigador. Anthropic habría rebajado a 'None' con un bounty de 100 dólares.

Blog, Contáctanos

¿Tienes alguna pregunta sobre nuestros artículos o servicios? Nuestro equipo está listo para ayudarte.

Agendar Reunión

Reserva un horario.

Agendar Ahora

Correo Electrónico

Envía un mensaje.

[email protected]

WhatsApp

Conversación rápida.

Dirección

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Especialista Tech86

En línea ahora

¡Hola! ¿Cómo podemos ayudar a escalar tu negocio hoy?

Tech86 Engineering

Valoramos tu privacidad

Utilizamos cookies y tecnologías similares para optimizar tu experiencia, analizar el tráfico del sitio web y personalizar contenido. Al hacer clic en "Aceptar Todos", aceptas el uso de todas las cookies. Lee nuestra Política de Privacidad.