La falla de Claude Code GitHub Action permitió el secuestro de repositorios.
TL;DRA una falla en la acción de GitHub Claude Code de Anthropic permitió a los atacantes eludir las verificaciones de permisos a través de una cuenta de bot falsa y utilizar inyección de comandos para robar tokens OIDC, obteniendo acceso de escritura a cualquier repositorio vulnerable. Anthropic corrigió la vulnerabilidad en un plazo de cuatro días tras la divulgación.
El ataque comienza con un problema en GitHub. No es uno sofisticado. Solo un problema abierto por una cuenta de bot con un cuerpo cuidadosamente redactado que parece un mensaje de error. Cuando la acción de GitHub de Claude Code lo recoge para su clasificación, sigue las instrucciones ocultas dentro, lee las variables de entorno del proceso y las escribe de nuevo en el problema para que el atacante las recoja.
Esas variables contienen las credenciales necesarias para solicitar un token OIDC, que puede ser intercambiado por un token de instalación de la aplicación de GitHub de Claude con acceso completo de escritura al código del repositorio, problemas y flujos de trabajo. Si diriges el ataque al propio repositorio claude-code-action de Anthropic, que ejecutaba el mismo flujo de trabajo vulnerable, podrías envenenar la acción que miles de proyectos posteriores utilizan.
El investigador de seguridad RyotaK de GMO Flatt Security informó de la vulnerabilidad a Anthropic en enero. La empresa corrigió la elusión principal en un plazo de cuatro días, con un endurecimiento adicional durante la primavera. Los parches están en claude-code-action v1.0.94. Anthropic calificó los problemas con un 7.8 bajo CVSS v4.0 y pagó una recompensa de $4,800.
Cómo funcionó la elusión
El 💜 de la tecnología de la UE Las últimas novedades de la escena tecnológica de la UE, una historia de nuestro sabio fundador Boris y un arte de IA cuestionable. Es gratis, cada semana, en tu bandeja de entrada. ¡Suscríbete ahora! Las acciones de GitHub de Claude Code le dan a Claude acceso de lectura y escritura al código de un repositorio, problemas, solicitudes de extracción, discusiones y archivos de flujo de trabajo por defecto. Para limitar quién puede activar esas capacidades, la acción verifica si el actor tiene acceso de escritura al repositorio.
La verificación tenía un agujero. Confiaba automáticamente en cualquier actor cuyo nombre terminara en [bot], bajo la suposición de que las aplicaciones de GitHub son herramientas de confianza instaladas por administradores. Pero cualquiera puede registrar una aplicación de GitHub, instalarla en un repositorio que controla y usar su token para abrir un problema en cualquier repositorio público. La acción vio un nombre de bot y dejó pasar el contenido. El modo agente carecía de la verificación adicional del actor humano que realizaba el modo etiqueta, dejándolo completamente expuesto.
Una vez pasado el umbral, el atacante utiliza inyección de comandos indirecta, plantando instrucciones dentro del contenido que Claude lee como datos pero ejecuta como comandos. RyotaK elaboró un cuerpo de problema disfrazado como un mensaje de recuperación de error. Claude "se recuperó" ejecutando los comandos enterrados dentro, leyendo /proc/self/environ a pesar de las protecciones integradas de Claude Code contra esa operación exacta, y publicando los valores en el problema.
Un segundo camino, sin necesidad de bot
RyotaK también identificó una ruta más suave que eludía completamente el truco del bot. El propio flujo de trabajo de clasificación de problemas de ejemplo de Anthropic se envió con la configuración allowed_non_write_users: "*", que permite a cualquiera activar la acción. La documentación de Anthropic ya había señalado esto como arriesgado, pero muchos repositorios copiaron el ejemplo y heredaron la configuración.
Peor aún, Claude estaba publicando resúmenes de tareas en el panel de resumen visible públicamente de la ejecución del flujo de trabajo, creando un canal de exfiltración listo para usar. Una tercera variante apuntó a condiciones de carrera: edita el problema de un usuario de confianza después de que se active el flujo de trabajo pero antes de que Claude lo lea, y la carga maliciosa se presenta como entrada de confianza.
No es teórico
El mismo patrón, un clasificador de problemas de IA combinado con amplios permisos e inyección de comandos, ya ha causado daños reales. En febrero, un título de problema inyectado con comandos contra el flujo de trabajo de clasificación de claude-code-action de Cline permitió a los atacantes robar un token de publicación de npm y enviar un [email protected] no autorizado. La versión maliciosa instaló a la fuerza un agente de IA separado llamado OpenClaw en aproximadamente 4,000 sistemas de desarrolladores durante un período de ocho horas antes de ser retirada.
Un bot autónomo llamado HackerBot-Claw luego pasó a finales de febrero sondeando las configuraciones incorrectas de GitHub Actions en proyectos de Microsoft, Datadog y CNCF. Cuando intentó inyectar comandos a un revisor basado en Claude a través de un archivo de configuración envenenado, Claude lo detectó y se negó. Eso es tanto tranquilizador como preocupante: las defensas del modelo son lo suficientemente inconsistentes como para que la misma clase de ataque a veces tenga éxito y a veces falle.
Cincuenta elusiones y contando
RyotaK dice que ahora ha informado aproximadamente 50 formas separadas de eludir el sistema de permisos de Claude Code y ejecutar comandos. El hallazgo es parte de una ola más amplia de ataques a la cadena de suministro que apuntan a herramientas de desarrollo impulsadas por IA, desde la extensión de VS Code envenenada que violó los propios repositorios de GitHub hasta paquetes npm maliciosos diseñados para cosechar credenciales de asistentes de codificación de IA.
La remediación es sencilla: actualizar a claude-code-action v1.0.94 o posterior, auditar cualquier flujo de trabajo que permita a usuarios o bots no autorizados activar Claude, eliminar secretos innecesarios del entorno y eliminar herramientas y permisos que podrían usarse para la exfiltración.
El problema más profundo es estructural. La inyección de comandos sigue sin resolverse. Un agente de IA con herramientas reales y tokens reales puede ser llevado tan lejos como lo permitan sus permisos, y los permisos que la mayoría de las organizaciones otorgan por defecto son mucho más amplios que la superficie de ataque que están preparadas para defender.
Otros artículos
La falla de Claude Code GitHub Action permitió el secuestro de repositorios.
Una falla en la acción de GitHub de Claude Code permitió a los atacantes eludir las verificaciones de permisos a través de bots falsos y robar tokens OIDC mediante inyección de comandos.
