Aikido

Une attaque par chaîne d'approvisionnement vise les paquets Laravel-Lang à l'aide d'un programme de vol d'identifiants

Écrit par
Ilyas Makari

Le 22 mai 2026, nous avons détecté une attaque en cours visant la chaîne d'approvisionnement de Laravel-Lang. Nous avons immédiatement signalé le problème aux responsables du projet. Le pirate a publié des balises de version malveillantes sur trois dépôts largement utilisés, y injectant un code destiné à voler des identifiants qui se charge automatiquement via la fonctionnalité d'autochargement de Composer.

Ce qui rend cette attaque particulièrement sournoise, c'est que le code malveillant n'a jamais été intégré aux dépôts officiels. GitHub permet aux balises de version de pointer vers des commits provenant d'une fourche du même dépôt. L'attaquant a exploité cette fonctionnalité pour créer des balises pointant vers des commits situés dans une fourche malveillante qu'il contrôlait.

233 versions sont actuellement compromises sur :

  • laravel-lang/lang (7 800 étoiles)
  • laravel-lang/attributs
  • laravel-lang/codes-status-http

Nous avons également signalé cette attaque à Packagist, qui a immédiatement réagi en retirant les versions malveillantes et en suspendant temporairement la mise en ligne des paquets concernés afin d'empêcher toute nouvelle installation.

Étape 1 : Le compte-gouttes

L'attaquant a introduit un fichier nommé src/helpers.php dans les balises de version concernées. À première vue, cela ressemble à une aide de localisation Laravel classique, définissant deux fonctions inoffensives : laravel_lang_locale() et laravel_lang_fallback(). C'est en dessous de ces fonctions que le vrai travail commence.

Un bloc de code auto-exécutable s'exécute une seule fois sur chaque machine qu'il infecte. Il identifie l'hôte à l'aide d'un hachage du chemin d'accès au fichier, du nom d'hôte et de l'inode, puis crée un fichier marqueur dans le répertoire temporaire du système afin de ne s'exécuter qu'une seule fois. Le domaine C2 est dissimulé dans un tableau d'entiers décodé lors de l'exécution afin d'échapper aux analyseurs statiques. Il renvoie vers flipboxstudio[.]info.

Le dropper récupère ensuite une charge utile à partir de flipboxstudio[.]info/payload en utilisant `file_get_contents` avec une solution de secours via `curl`, les deux avec la vérification SSL désactivée. Sous Windows, il dépose un fichier d'exécution .vbs et exécute la charge utile en arrière-plan via `cscript`. Sous Linux et macOS, il exécute la charge utile en arrière-plan via exec().

Étape 2 : Le voleur

La charge utile récupérée est un programme de vol d'identifiants PHP d'environ 5 900 lignes, organisé en quinze modules de collecte spécialisés. Après avoir recueilli toutes les données accessibles, il crypte les résultats à l'aide de l'algorithme AES-256 et les envoie à flipboxstudio[.]info/exfil. Il s'efface ensuite du disque afin de limiter les traces pouvant servir de preuves.

Ce qu'il dérobe

Cloud

  • Clés d'accès AWS, clés secrètes et jetons de session (provenant de l'environnement, ~/.aws/credentials et les métadonnées des instances EC2 en cours d'exécution)
  • Identifiants par défaut de l'application GCP, bases de données de jetons d'accès et toutes les configurations CLI nommées
  • Jetons d'accès Azure, cache MSAL et profils d'entité de service
  • Jeton d'authentification DigitalOcean, Heroku, Vercel, Netlify, Railway et Fly.io

Les secrets de l'infrastructure

  • Tous les fichiers kubeconfig, y compris /etc/kubernetes/admin.conf
  • Jetons HashiCorp Vault
  • Configurations du référentiel Helm
  • Docker config.json

Identifiants de développeur

  • Clés privées SSH
  • Tout .git-credentials et .gitconfig fichiers
  • .netrc, .npmrc, .yarnrc, .pypirc, .gem/credentials, .composer/auth.json
  • Jeton d'authentification GitHub CLI, GitLab CLI et Hub CLI
  • Fichiers d'historique du shell (bash, zsh, psql, mysql, python, node)
  • Tout .env fichiers et fichiers de configuration détectés lors d'une analyse récursive du répertoire de travail (wp-config.php, settings.py, docker-compose.yml, secrets.yaml, etc.)

Navigateurs et gestionnaires de mots de passe

  • Mots de passe enregistrés provenant de 17 navigateurs basés sur Chromium : Chrome, Edge, Brave, Opera, Opera GX, Vivaldi, Chromium, Yandex et bien d'autres. Sous Windows, un utilitaire est fourni .exe est exécuté pour déchiffrer la base de données de connexion de Chrome protégée par DPAPI
  • Firefox et Thunderbird logins.json et key4.db pour tous les profils
  • KeePass .kdbx et .kdb fichiers de base de données
  • Fichiers de coffre-fort locaux de 1Password Bitwarden

Portefeuilles de cryptomonnaies

  • Fichiers de portefeuille Bitcoin, Ethereum, Monero, Litecoin, Dash, Dogecoin et Zcash
  • Les portefeuilles Electrum, Exodus, Atomic, Ledger Live, Trezor, Wasabi et Sparrow
  • Portefeuilles sous forme d'extensions de navigateur, classés par identifiant d'extension : MetaMask, Phantom, Trust Wallet, Ronin, Keplr, Solflare et Rabby

Spécifique à Windows

  • Gestionnaire d'identifiants Windows et entrées du coffre-fort
  • Sessions enregistrées dans PuTTY et WinSCP (les mots de passe WinSCP sont décryptés en temps réel)
  • .rdp les fichiers du Bureau, du dossier Documents et du dossier Téléchargements
  • Profils de registre Outlook, inventaire des fichiers OST/PST et entrées du Gestionnaire d'identités pour les services Microsoft

Plateformes de communication

  • Jetons Slack
  • Jetons pour les bots Discord 
  • Jetons pour les bots Telegram

Configurations VPN

  • Fichiers de configuration et identifiants extraits pour NordVPN, ExpressVPN, ProtonVPN, CyberGhost, Private Internet Access, Windscribe, Mullvad, Surfshark, WireGuard et OpenVPN

Comment Aikido détecte cela

Si vous êtes un utilisateur Aikido, vérifiez votre flux central et filtrez les problèmes de logiciels malveillants. Cela apparaîtra comme un problème critique 100/100. Aikido effectue des rescans nocturnes, mais nous vous recommandons de déclencher un rescan manuel dès maintenant.

Si vous n'êtes pas encore un utilisateur Aikido, vous pouvez créer un compte et connecter vos dépôts. Notre couverture des logiciels malveillants est incluse dans le plan gratuit, aucune carte de crédit requise.

Pour une couverture plus large de toute votre équipe, l'Endpoint Protection d'Aikido vous offre une visibilité et un contrôle sur les packages logiciels installés sur les appareils de votre équipe. Elle couvre les extensions de navigateur, les bibliothèques de code, les plugins d'IDE et les dépendances de build, le tout en un seul endroit. Arrêtez les logiciels malveillants avant qu'ils ne soient installés.

Pour une protection future, envisagez Aikido Safe Chain (open source). Safe Chain s'intègre à votre flux de travail existant, en interceptant les commandes npm, npx, yarn, pnpm et pnpx et en vérifiant les paquets par rapport à Aikido Intel avant l'installation.

Indicateurs de compromission

Réseau

  • flipboxstudio.info (domaine C2)
  • flipboxstudio.info/payload (récupération par compte-gouttes)
  • flipboxstudio.info/exfil (point d'extraction)

Fichiers et chemins d'accès

  • <tmp>/.laravel_locale/<md5_hash> (marqueur d'infection)
  • <tmp>/.laravel_locale/<12 random hex chars>.php (voleur déchu)
  • <tmp>/.laravel_locale/<8 random hex chars>.vbs (Lanceur Windows)
Partager :

https://www.aikido.dev/blog/supply-chain-attack-targets-laravel-lang-packages-with-credential-stealer

S'abonner aux actualités

4,7/5
Fatigué des faux positifs ?
Essayez Aikido, comme 100 000 autres.
Commencez maintenant
Obtenez une démonstration personnalisée

Approuvé par plus de 100 000 équipes

Réserver maintenant
Analysez votre application à la recherche d'IDORs et de chemins d'attaque réels

Approuvé par plus de 100 000 équipes

Démarrer l'analyse
Découvrez comment le pentest IA teste votre application

Approuvé par plus de 100 000 équipes

Démarrer les tests

Sécurisez votre environnement dès maintenant.

Sécurisez votre code, votre cloud et votre environnement d’exécution dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Aucune carte de crédit requise | Résultats en 32 secondes.