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_targety 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_targetsin 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_targetsi no es absolutamente necesario