Ataque Megalodon a GitHub: 5.561 repositorios comprometidos

Ataque Megalodon a GitHub: investigadores de SafeDep documentaron esta semana el incidente de cadena de suministro más grande del año. Además, la campaña automatizada inyectó 5.718 commits maliciosos en 5.561 repositorios públicos, manipulando workflows de CI para exfiltrar secretos, credenciales en la nube y tokens OIDC a un servidor de mando y control.

Cómo funciona el ataque Megalodon a GitHub

La campaña aprovecha la confianza implícita que muchos proyectos depositan en las GitHub Actions. En la práctica, los atacantes modifican archivos de workflow (.github/workflows/*.yml) para que, en cada ejecución, el runner envíe variables de entorno y secretos al exterior. Asimismo, como la modificación se mezcla con commits legítimos generados de forma masiva, el cambio pasa desapercibido en revisiones rápidas.

Por otro lado, la superficie de impacto es notable: secretos de despliegue, claves de proveedores cloud, tokens OIDC para federación de identidad y credenciales de paquetes privados. En consecuencia, cualquier organización que tuviera workflows clonados desde un repositorio afectado podría haber expuesto su pipeline sin saberlo.

Una semana marcada por la cadena de suministro

Aun así, el ataque Megalodon a GitHub no apareció aislado. Asimismo, el mismo día se publicó un análisis sobre GitHub Actions Cache Poisoning, que describe cómo envenenar la caché compartida entre ejecuciones para escalar privilegios. De hecho, días antes, GitHub confirmó la brecha de otros 3.800 repositorios vía una extensión maliciosa de VSCode, y el paquete node-ipc de npm volvió a ser comprometido para robar credenciales mediante registros DNS TXT.

En conclusión, la cadena de suministro de software ya no se protege solo en producción. Se protege en el commit, en el runner y en el registro de paquetes. Para profundizar, explora más artículos sobre ciberseguridad en nuestro blog.

Cómo defenderse del ataque Megalodon a GitHub

Por lo tanto, frente al ataque Megalodon a GitHub y campañas similares, conviene aplicar las siguientes acciones inmediatas:

  • Auditar workflows recientes en busca de pasos curl, wget o bash -c que envíen datos fuera del runner.
  • Rotar secretos almacenados en Actions Secrets si el repositorio recibió commits no atribuibles a tu equipo.
  • Restringir permisos del GITHUB_TOKEN al mínimo necesario y desactivar write por defecto.
  • Fijar versiones de las acciones de terceros por SHA, nunca por etiqueta móvil como @main.
  • Habilitar branch protection y revisión obligatoria de cambios en .github/workflows/.

Finalmente, la defensa contra esta clase de ataques no se compra: se diseña. Por ello, tratar el pipeline como un activo crítico, con su propio modelo de amenazas, deja de ser opcional.

Recuerda que estaremos publicando constantemente en nuestro blog más contenido sobre tecnología.

Puedes encontrarnos en Facebook y LinkedIn para más contenido relacionado con seguridad en internet y muchos temas más.

Fuentes: SafeDep — Investigación Megalodon, GitHub Actions Cache Poisoning, BleepingComputer — Brecha VSCode.