Un investigador de seguridad encontró una falla en Claude Code GitHub Action de Anthropic que permitía a un atacante hacerse cargo de los repositorios públicos vulnerables que lo ejecutaban, con nada más que un único problema de GitHub abierto. Debido a que el propio repositorio de acciones de Anthropic utilizó el mismo flujo de trabajo, un ataque funcional podría haber introducido código malicioso en la acción misma y en los proyectos posteriores que la ejecutan.
RyotaK de GMO Flatt Security informó a Anthropic sobre la derivación del núcleo en enero, y Anthropic lo arregló en cuatro días, y se endureció aún más durante la primavera; las correcciones están en claude-code-action v1.0.94. Anthropic calificó los problemas con 7.8 en CVSS v4.0 y pagó una recompensa por errores.
Claude Code GitHub Actions coloca a Claude en canales de CI/CD para clasificar problemas, colocar etiquetas, revisar solicitudes de extracción o ejecutar comandos de barra diagonal. De forma predeterminada, el flujo de trabajo obtiene acceso de lectura y escritura al código, los problemas, las solicitudes de extracción, las discusiones y los archivos de flujo de trabajo de un repositorio. Debido a que esos permisos son amplios, se supone que la acción debe ser exigente en cuanto a quién puede activarla: sólo los usuarios con acceso de escritura.
El control del gatillo tenía un agujero. Señaló a cualquier actor cuyo nombre terminara en (bot), asumiendo que las aplicaciones GitHub son cosas confiables que instalan los administradores. El problema es que cualquiera puede registrar una aplicación GitHub, instalarla en un repositorio de su propiedad y usar su token para abrir una incidencia o una solicitud de extracción en cualquier repositorio público. La acción detectó «un robot» y dejó pasar el contenido del atacante. El modo Etiqueta tenía una verificación adicional para confirmar que el actor era un ser humano real; el modo agente no lo hizo, lo que lo dejó abierto.
A partir de ahí, el atacante se apoya en la inyección indirecta, el truco de colocar instrucciones dentro del contenido que lee una IA para que el modelo las siga en lugar de su tarea real. RyotaK escribió un problema cuyo cuerpo parecía un mensaje de error, luego refinó el mensaje hasta que Claude se «recuperó» ejecutando los comandos ocultos en él. El objetivo es /proc/self/environ, el archivo de Linux que contiene las variables de entorno de un proceso, incluidos los secretos. Claude Code bloquea las lecturas ingenuas, pero RyotaK evita la guardia de todos modos y consigue que Claude vuelva a escribir los valores en el problema, donde el atacante puede capturarlos.
El verdadero premio en esas variables es el par de credenciales que GitHub Actions usa para solicitar un token OIDC, un token firmado que demuestra «Soy este flujo de trabajo ejecutándose en este repositorio». Claude Code intercambia ese token con el backend de Anthropic por un token de instalación de la aplicación Claude GitHub con acceso de escritura. Roba esas credenciales, reproduce el intercambio y tendrás acceso de escritura al código, los problemas y los flujos de trabajo del objetivo. Apunte al repositorio claude-code-action y podría envenenar la acción que realizan los proyectos posteriores.

RyotaK también marcó una ruta más suave que omitió por completo el truco del bot. El propio flujo de trabajo de ejemplo de clasificación de problemas de Anthropic se incluye con Allow_non_write_users: «*», que permite que cualquiera lo active, una configuración que los documentos de Anthropic ya marcan como riesgosa. 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, una forma lista para filtrar datos. Muchos repositorios copiaron ese ejemplo y heredaron el agujero.
También hay un camino para un atacante que puede editar problemas pero no puede activar Claude por sí solo: editar el problema de un usuario confiable después de haber activado el flujo de trabajo, pero antes de que Claude lo lea y la carga útil se instale como entrada «confiable».
¿Qué hacer? Actualice a claude-code-action v1.0.94 o posterior. Luego audite cualquier flujo de trabajo que permita a los usuarios sin acceso de escritura o bots activar Claude: si está recibiendo entradas que no son de confianza, no le proporcione ningún secreto más allá de la clave API de Anthropic y GITHUB_TOKEN, y elimine las herramientas y permisos que puedan usarse para la exfiltración.
Nada de esto es teórico. La misma configuración, un sistema de clasificación de problemas de IA más permisos amplios e inyección rápida, ya causó un verdadero impacto en la cadena de suministro:
- En febrero, un título de problema inyectado rápidamente contra el flujo de trabajo de clasificación de acciones de código claude de Cline permitió a los atacantes robar un token de publicación npm y enviar un cline@2.3.0 no autorizado. La versión maliciosa solo instaló a la fuerza un agente de IA independiente y no malicioso y fue retirada unas ocho horas después, pero la misma cadena podría haber enviado malware real con la misma facilidad a todos los que actualizaron.
- El robot autónomo «HackerBot-Claw» pasó a finales de febrero investigando configuraciones erróneas de GitHub Actions en proyectos de Microsoft, Datadog, CNCF y otros, aunque cuando intentó inyectar rápidamente a un revisor basado en Claude a través de un archivo de configuración envenenado, Claude lo detectó y se negó.
No hay ninguna señal pública de que este camino exacto, el que envenena la propia acción de Anthropic, se haya utilizado contra un objetivo vivo; RyotaK lo demostró sólo en sus propios repositorios de prueba, y tiene cuidado de separarlo de las variantes anteriores que sí fueron explotadas.
RyotaK dice que ahora ha informado alrededor de 50 formas distintas de eludir el sistema de permisos de Claude Code y ejecutar comandos, parte de una serie constante de fallas de inyección rápida en agentes de codificación de IA. La inyección rápida todavía no está resuelta, y un agente con herramientas y tokens reales puede ser empujado hasta donde sus permisos lo permitan.