Megalodon : Des milliers de dépôts GitHub compromis via des pipelines CI/CD automatisés
Des chercheurs en cybersécurité ont découvert une campagne automatisée massive baptisée **Megalodon**, qui a injecté du code malveillant dans des milliers de dépôts **GitHub**. L'attaque a compromis les pipelines CI/CD, permettant le vol à grande échelle d'identifiants et de secrets sensibles.

### Compromission massive de dépôts GitHub
**Megalodon** a effectué 5 718 commits malveillants sur 5 561 dépôts **GitHub** en l'espace de six heures. Selon un rapport de **SafeDep**, l'attaquant a utilisé des comptes éphémères et des identités d'auteur forgées (build-bot, auto-ci, ci-bot, pipeline-bot) pour injecter des workflows **GitHub Actions** contenant des payloads bash encodés en base64.
Ces payloads exfiltrent des secrets CI, des identifiants cloud, des clés SSH, des tokens OIDC et des secrets de code source vers un serveur C2 situé à 216.126.225[.]129:8443.
### Cibles d'exfiltration de données
Le malware récolte un large éventail de données sensibles, notamment :
* Variables d'environnement CI, /proc/*/environ, et environnement PID 1
* Identifiants **Amazon Web Services (AWS)**
* Tokens d'accès **Google Cloud**
* Identifiants de rôle d'instance obtenus en interrogeant les points d'accès **AWS IMDSv2**, les métadonnées **Google Cloud** et le **Microsoft Azure Instance Metadata Service (IMDS)**
* Clés privées SSH
* Configurations Docker et Kubernetes
* Tokens Vault
* Identifiants Terraform
* Historique des shells
* Clés API, chaînes de connexion de base de données, JWT, clés privées PEM et tokens cloud correspondant à plus de 30 modèles d'expressions régulières de secrets
* URL de requête de token OIDC **GitHub Actions** et token
* GITHUB_TOKEN, tokens GitLab CI/CD et tokens Bitbucket
* Fichiers .env, credentials.json, service-account.json et autres fichiers de configuration
### Packages impactés et chronologie de l'attaque
L'un des packages impactés est `@tiledesk/tiledesk-server`, qui intègre un payload bash encodé en Base64 dans un fichier de workflow **GitHub Actions**. L'attaque a eu lieu le 18 mai 2026, entre 11h36 et 17h48 UTC.
L'attaquant a utilisé quatre noms d'auteur rotatifs (build-bot, auto-ci, ci-bot, pipeline-bot) et sept messages de commit, tous imitant une maintenance CI de routine. Des PAT ou des clés de déploiement compromis ont été utilisés pour pousser les commits malveillants.
### Variantes de payload : SysDiag et Optimize-Build
Deux variantes de payload ont été observées :
* **SysDiag** : Une variante de masse qui ajoute un nouveau workflow déclenché à chaque push et pull request.
* **Optimize-Build** : Une variante ciblée qui ne s'active que sur `workflow_dispatch`, un déclencheur **GitHub Actions** qui permet aux utilisateurs d'exécuter manuellement un workflow à la demande.
L'approche ciblée, comme observé dans la compromission de **Tiledesk**, se concentre sur les runners CI/CD plutôt que sur les installations de paquets npm.

### L'ère des attaques sur la chaîne d'approvisionnement
Une fois qu'un propriétaire de dépôt fusionne le commit malveillant, le malware s'exécute dans ses pipelines CI/CD, se propageant davantage et permettant le vol d'identifiants et de secrets à grande échelle.
Selon Moshe Siman Tov Bustan d'**OX Security**, cette attaque marque le début d'une nouvelle ère d'attaques sur la chaîne d'approvisionnement, suite à des incidents précédents tels que la compromission de **GitHub** par **TeamPCP**.
### Surface d'attaque élargie de TeamPCP
Ce développement intervient alors que **TeamPCP** a utilisé la chaîne d'approvisionnement logicielle interconnectée pour corrompre des centaines d'outils open-source, se faufilant à travers plusieurs écosystèmes et extorquant des victimes à des fins lucratives. **GitHub**, propriété de **Microsoft**, est devenu le dernier ajout à la longue liste de victimes du groupe, qui comprend également **TanStack**, **Grafana Labs**, **OpenAI** et **Mistral AI**.
Les attaques de **TeamPCP** ont alimenté une exploitation cyclique de projets open-source populaires, où une compromission alimente la suivante, permettant au malware de se propager comme un incendie de forêt de manière similaire à un ver. Le groupe semble également motivé financièrement et géopolitiquement, avec des liens avec **BreachForums** et d'autres groupes d'extorsion comme **LAPSUS$** et **VECT**, et le déploiement de malware wiper lors de la détection de machines situées en Iran et en Israël.
### Réponse de NPM et efforts d'atténuation
Les retombées de la série d'attaques de **TeamPCP** et du ver **Mini Shai-Hulud** ont conduit **npm** à invalider les tokens d'accès granulaires avec accès en écriture qui contournent l'authentification à deux facteurs (2FA). **NPM** exhorte également les utilisateurs à passer à la publication de confiance (Trusted Publishing) pour réduire la dépendance à de tels tokens.
### Paquets NPM malveillants imitant Polymarket
Dans un incident distinct, un compte éphémère nommé "polymarketdev" a publié neuf paquets **npm** malveillants imitant les outils CLI de trading de **Polymarket** en l'espace de 30 secondes pour voler les clés privées Ethereum/Polygon des victimes via un hook postinstall. Les paquets incluent :
* polymarket-trading-cli
* polymarket-terminal
* polymarket-trade
* polymarket-auto-trade
* polymarket-copy-trading
* polymarket-bot
* polymarket-claude-code
* polymarket-ai-agent
* polymarket-trader
Lors de l'installation, un script postinstall affiche une fausse invite d'intégration de portefeuille qui demande à l'utilisateur de coller sa clé privée, affirmant qu'elle reste cryptée. Le script envoie ensuite la clé brute en texte clair à un Worker **Cloudflare**. Cela met en évidence la sophistication croissante des attaquants dans l'exploitation de l'ingénierie sociale pour compromettre les identifiants des utilisateurs.