La semana pasada un investigador de seguridad informática, RyotaK, reveló una vulnerabilidad crítica en la acción de GitHub de Claude Code, el asistente de programación de Anthropic, que permite a un atacante comprometer repositorios públicos que la utilizan con solo crear un issue.

El exploit se basa en la falta de validación adecuada del nombre del issue y su contenido. Al abrir un issue con un nombre específico, la acción de GitHub ejecuta automáticamente un script que descarga y ejecuta código desde el mismo issue, sin verificar la autenticidad del autor. En esencia, cualquier persona que pueda abrir un issue en el repositorio de un proyecto que utilice Claude Code puede inyectar código malicioso que se compilará y desplegará en todas las ramas del proyecto.

La magnitud del riesgo se ve amplificada por el hecho de que el propio repositorio de Anthropic que aloja la acción de Claude Code utiliza la misma configuración de flujo de trabajo. Esto significa que un atacante potencial puede subir código malicioso directamente a la acción y, al mismo tiempo, a todos los proyectos que dependen de ella. En otras palabras, el vector de ataque no solo compromete repositorios individuales, sino que también puede infiltrarse en la cadena de suministro de software.

Para ilustrar el impacto, consideremos un escenario típico: un desarrollador abre un repositorio público que declara en su README que utiliza "Claude Code" para generar snippets de código y corregir errores. El flujo de trabajo de GitHub ejecuta la acción cada vez que se hace un push. Un atacante, con solo crear un issue llamado "Update-Dependency", puede hacer que la acción descargue un script malicioso que modifique archivos, introduzca puertas traseras o incluso elimine datos críticos. Como la acción se ejecuta con los permisos del repositorio, cualquier cambio queda permanente y puede propagarse sin que el propietario del proyecto lo note.

Esta brecha destaca la importancia de la gestión de dependencias y la revisión rigurosa de las acciones de GitHub. Aunque GitHub ha implementado políticas de “review required” para las acciones que se usan en repositorios de terceros, la comunidad sigue siendo vulnerable cuando las acciones mismas contienen fallos de seguridad. La solución más efectiva es adoptar un enfoque de “least privilege” y limitar el alcance de las acciones a tareas estrictamente necesarias.

Por qué importa: La cadena de suministro de software es cada vez más crítica en el ecosistema tecnológico. Un solo punto de fallo en una acción compartida puede afectar a miles de proyectos, especialmente en el ámbito de inteligencia artificial, donde los modelos de código generan gran parte del software. La vulnerabilidad expuesta por RyotaK subraya la necesidad de auditorías constantes y de adoptar principios de seguridad desde el diseño.

Recomendaciones para desarrolladores:

  1. Revise las dependencias de sus repositorios y limite el uso de acciones de terceros a fuentes verificadas.
  2. Implemente controles de flujo de trabajo para validar el contenido de los issues antes de ejecutar scripts.
  3. Use herramientas de análisis estático y dinámico para detectar código malicioso en dependencias.
  4. Considere la posibilidad de mantener una copia local de la acción y mantenerla actualizada manualmente.

Para Anthropic, la reacción inmediata fue lanzar un parche que corrige la validación del nombre del issue y añade autenticación de firma digital. Sin embargo, la confianza de la comunidad se ha visto erosionada, y el caso sirve como advertencia para todas las empresas que dependen de flujos de trabajo automatizados en GitHub.

En conclusión, la vulnerabilidad de Claude Code GitHub Action es un recordatorio contundente de que la seguridad no es un complemento, sino un requisito fundamental en el desarrollo de software colaborativo. Los profesionales de TI deben mantenerse alerta, revisar sus dependencias y adoptar prácticas de seguridad proactivas para protegerse contra ataques que, como el descrito, pueden propagarse rápidamente a través de la cadena de suministro.