Ataque en cadena en GitHub rastreado hasta token filtrado de SpotBugs

Una reciente investigación reveló que el ataque en cadena de suministro en GitHub que afectó a Coinbase en marzo se originó por un token personal filtrado de un workflow del proyecto SpotBugs.

¿Cómo empezó el ataque? ️‍♂️

  • En noviembre de 2024, un mantenedor de SpotBugs (SPTBHS_MNTNR) subió su token personal (PAT) a un flujo de trabajo CI.
  • El 6 de diciembre, un atacante explotó el workflow vulnerable pull_request_target y robó el PAT con un pull request malicioso desde una cuenta falsa.
  • El 11 de marzo de 2025, usaron ese acceso para infiltrar un workflow malicioso en SpotBugs.

Efecto dominó en proyectos clave

  • El atacante accedió a Reviewdog y luego a tj-actions/changed-files, inyectando código malicioso que recolectaba secretos de runners CI.
  • Aunque potencialmente pudo haber afectado a 23,000 repositorios, solo se expusieron datos en 218 repos.
  • El objetivo final parecía ser Coinbase, específicamente su repositorio coinbase/agentkit.

¿Qué pasó con Coinbase?

  • El 14 de marzo, el flujo malicioso fue ejecutado en su CI, pero no se filtraron secretos.
  • Coinbase fue alertado rápidamente y eliminó el workflow comprometido.
  • El ataque falló en su intento de comprometer la infraestructura de la plataforma de criptomonedas.

Lecciones y recomendaciones

Este ataque revela problemas serios en la cadena de confianza del ecosistema open source, entre ellos:

  • Mutabilidad de etiquetas (tags) en GitHub Actions
  • Falta de registros detallados (logging) en los flujos de trabajo
  • Riesgos del uso de pull_request_target sin precaución

Recomendaciones clave:

  • Rotar todos los tokens/secrets si tu proyecto usó los workflows comprometidos
  • Auditar logs de GitHub Actions (especialmente del 10 al 14 de marzo) en busca de datos sensibles o base64
  • Fijar dependencias por hash de commit y no por tags
  • Evitar pull_request_target si no es absolutamente necesario