Megalodon: 5,561 GitHub Repos Backdoored via Infostealer-Sourced CI Credenciales

Cómo campaña Megalodon armizó secretos de desarrollador de infostealer-harvested para backdoor 5,561 repositorios GitHub en carreras de CI automatizadas.

Megalodon: 5,561 GitHub Repos Backdoored via Infostealer-Sourced CI Credenciales
📌
Serie de Redondas de Seguridad: Semana del 28 de mayo de 20264 min de lectura

El 18 de mayo de 2026 entre las 11:36 a.m. y las 5:48 p.m. UTC, una campaña automatizada llamada Megalodon empujado 5,718 commits maliciosos a 5,561 repositorios GitHub en una sola ventana de seis horas. Una investigación de seguimiento de Hudson Rock publicada el 23 de mayo concluyó que el ataque fue fuente exclusiva de credenciales de infostealer-compromised, con más del 33% de las cuentas de GitHub afectadas que coinciden directamente con las computadoras en registros de infostealer conocidos.

Cadena de ataque

The attacker rotated through four forged author identities — build-bot, auto-ci, ci-bot, pipeline-bot — y siete mensajes que imitan el mantenimiento rutinario del CI. Cuentas GitHub con nombres de usuario aleatorios de 8 caracteres (por ejemplo, rkb8el9r, bhlru9nr) se utilizaron para empujar a través de PATs comprometidos o desplegar llaves.

La carga útil inyectada era una Base64-encoded bash script incrustado en un nuevo .github/workflows/ archivo. Se observaron dos variantes de carga útil:

  • SysDiag — variante de masa; agrega un flujo de trabajo activado en cada push y pull_request.
  • Optimize-Build - variante específica; sólo se activan los desencadenantes workflow_dispatch para evitar el spam de tuberías CI y reducir el ruido para la seguridad operacional.

Una vez que un propietario del repositorio fusiona el commit, el malware ejecuta dentro del corredor de CI/CD y exfiltrates:

  • Cédulas AWS, GCP y Azure (incluyendo fichas de servicio IMDSv2/metadatos)
  • Llaves privadas SSH
  • GitHub Actions OIDC tokens and GITHUB_TOKEN
  • GitLab CI/CD y Bitbucket tokens
  • Docker y Kubernetes configs, fichas Vault, credenciales Terraform
  • .env archivos, credentials.json, service-account.json
  • Claves de API, cadenas de conexión de bases de datos, JWTs, teclas privadas PEM (configuradas a través de patrones de regex 30+)
  • Historia de Shell y /proc/*/environ

Todos los datos recogidos fueron exfiltrados a un servidor C2 en 216.126.225[.]129:8443.

Infostealer Root Causa

El análisis del 23 de mayo de Hudson Rock confirmó que las cuentas GitHub afectadas eran "exclusivamente provenientes de datos de infostealer". 331 de 978 nombres de usuario únicos corresponden directamente a computadoras infectadas por infostealers. Incluso cuando los nombres de usuario no se solapan directamente, las direcciones de correo electrónico asociadas revelaron nuevos compromisos de robo. Por lo tanto, el ataque es una consecuencia de la epidemia de infostealer más amplia que una vulnerabilidad de la plataforma GitHub.

npm Fallout and Polymarket Drainer

npm respondió invalidando todas las fichas de acceso granular con acceso a escritura que podría pasar 2FA, e instó a los usuarios a cambiar a la publicación fiduciaria. En un incidente separado pero relacionado, se publicaron nueve paquetes npm maliciosos que imitaban herramientas CLI de comercio de polimercado dentro de una ventana de 30 segundos para robar llaves privadas Ethereum/Polygon a través de un postinstall gancho que POSTs claves crudas a un trabajador de Cloudflare en hxxps://polymarketbot.polymarketdev.workers[.]dev/v1/wallets/keys.

COI

  • C2: 216.126.225[.]129:8443
  • Nombres de autor falsificados: build-bot, auto-ci, ci-bot, pipeline-bot
  • npm desagüe de cartera C2: polymarketbot.polymarketdev.workers[.]dev

Remediación

  • Rotar todos los PAT GitHub, desplegar llaves y cualquier secreto que haya estado presente en entornos CI desde el 18 de mayo.
  • Auditoría de su .github/workflows/ directorio para archivos inesperados añadidos por colaboradores desconocidos.
  • Permitir a los revisores requeridos en las solicitudes de tirado que toque los archivos de flujo de trabajo.
  • Enforce Trusted Publishing for npm package instead of long-lived token-based publishing.
  • Corre git log --all --author="build-bot\|auto-ci\|ci-bot\|pipeline-bot" --oneline encontrar commits inyectados.
  • Hunt infostealer exposure via HaveIBeenPwned, Hudson Rock Cavalier, o SpyCloud en todas las direcciones de correo electrónico del desarrollador.

← Volver a la Ronda de Seguridad: Semana del 28 de mayo de 2026