Attaque de la chaîne d'approvisionnement : des scripts malveillants ciblent Packagist
Une attaque coordonnée de la chaîne d'approvisionnement a compromis huit packages sur **Packagist**, injectant du code malveillant dans les fichiers `package.json`. L'attaque exploite des scripts post-installation pour télécharger et exécuter un binaire Linux depuis un dépôt GitHub désormais inactif, compromettant potentiellement les systèmes des développeurs.
Une nouvelle campagne d'attaque coordonnée de la chaîne d'approvisionnement a touché huit packages sur **Packagist**, incluant du code malveillant conçu pour exécuter un binaire Linux récupéré depuis une URL GitHub Releases.
« Bien que les packages affectés soient tous des packages Composer, le code malveillant n'a pas été ajouté à composer.json », a déclaré **Socket**. « Il a plutôt été inséré dans package.json, ciblant les projets qui expédient des outils de build JavaScript aux côtés de code PHP. »

### Ciblage inter-écosystèmes
Ce « placement inter-écosystèmes » fait ressortir l'activité, car les développeurs et les équipes de sécurité analysant les dépendances PHP peuvent se concentrer uniquement sur les métadonnées liées à Composer, tout en ignorant les hooks de cycle de vie `package.json` qui sont inclus dans le package. Les versions malveillantes ont depuis été supprimées de Packagist.
Une analyse des packages a révélé que leurs dépôts en amont ont été modifiés pour inclure un script `postinstall` qui tente de télécharger un binaire Linux depuis une URL GitHub Releases (`github[.]com/parikhpreyash4/systemd-network-helper-aa5c751f`), de le sauvegarder dans le dossier `/tmp/.sshd`, de modifier ses permissions à l'aide de `chmod` pour accorder des permissions d'exécution à tous les utilisateurs, et de l'exécuter en arrière-plan.
### Packages affectés
Les noms des packages et la version affectée associée sont listés ci-dessous :
* moritz-sauer-13/silverstripe-cms-theme (dev-master)
* crosiersource/crosierlib-base (dev-master)
* devdojo/wave (dev-main)
* devdojo/genesis (dev-main)
* katanaui/katana (dev-main)
* elitedevsquad/sidecar-laravel (3.x-dev)
* r2luna/brain (dev-main)
* baskarcm/tzi-chat-ui (dev-main)

### Campagne plus large ?
L'enquête de **Socket** a trouvé des références au même payload dans 777 fichiers sur **GitHub**, suggérant que cela pourrait faire partie d'une campagne plus large. Dans au moins deux cas, il a été ajouté à un workflow GitHub. Cependant, on ne sait pas encore combien de ces cas correspondent à des compromissions distinctes, des forks, des artefacts de packages dupliqués ou des références mises en cache.
* [Instance 1](https://github.com/448776129/UA2F/blob/master/.github/workflows/ci.yml)
* [Instance 2](https://github.com/448776129/blog-1/blob/9ebac2e4118396b84e508585f356bf06971c4fb5/.github/workflows/deploy_coding.yml)
« Cela suggère que l'attaquant ne s'appuyait pas sur un seul mécanisme d'exécution. Dans les artefacts de packages, le payload était déclenché via les scripts `postinstall` de `package.json », a déclaré la société de sécurité applicative. « Dans les fichiers de workflow, il était positionné pour s'exécuter pendant les jobs GitHub Actions. »
### Analyse du payload
De plus, la nature exacte du payload téléchargé depuis GitHub n'est pas claire, car le compte GitHub associé au dépôt qui l'héberge n'est plus disponible. Le choix du nom « gvfsd-network » pour le malware est intéressant, car il fait référence à un démon **GNOME** Virtual File System (**GVfs**) responsable de la gestion et de la navigation des partages réseau.
« Même sans le binaire de second étage, l'installeur malveillant suffit à justifier un blocage », a déclaré **Socket**. « Il permet l'exécution de code à distance pendant les workflows d'installation ou de build et tente de masquer son activité en désactivant la vérification TLS, en supprimant les erreurs et en exécutant un binaire téléchargé en arrière-plan. »