Attaque de la chaîne d'approvisionnement : des gems Ruby et modules Go malveillants ciblent les développeurs
Une nouvelle attaque de la chaîne d'approvisionnement logicielle a été découverte, exploitant des gems Ruby et des modules Go malveillants pour cibler les développeurs et les environnements CI/CD. L'attaque, attribuée au compte GitHub **BufferZoneCorp**, vise à voler des identifiants, à falsifier des GitHub Actions et à établir une persistance SSH.

### Packages Malveillants Identifiés
Le compte GitHub contrôlé par l'attaquant, « **BufferZoneCorp** », a publié une série de packages malveillants dans les écosystèmes RubyGems et Go. Bien que les packages aient depuis été retirés de RubyGems et bloqués, il est crucial de comprendre l'ampleur de l'attaque. Les packages suivants ont été identifiés :
* **Ruby :**
* knot-activesupport-logger
* knot-devise-jwt-helper
* knot-rack-session-store
* knot-rails-assets-pipeline
* knot-rspec-formatter-json
* knot-date-utils-rb (gem dormante)
* knot-simple-formatter (gem dormante)
* **Go :**
* github[.]com/BufferZoneCorp/go-metrics-sdk
* github[.]com/BufferZoneCorp/go-weather-sdk
* github[.]com/BufferZoneCorp/go-retryablehttp
* github[.]com/BufferZoneCorp/go-stdlib-ext
* github[.]com/BufferZoneCorp/grpc-client
* github[.]com/BufferZoneCorp/net-helper
* github[.]com/BufferZoneCorp/config-loader
* github[.]com/BufferZoneCorp/log-core (module dormant)
* github[.]com/BufferZoneCorp/go-envconfig (module dormant)
Ces packages ont été conçus pour imiter des modules légitimes et bien connus tels que `activesupport-logger`, `devise-jwt`, `go-retryablehttp`, `grpc-client` et `config-loader`, augmentant ainsi la probabilité que les développeurs les téléchargent involontairement.
### Vecteurs d'Attaque et Détails du Payload
Selon Kirill Boychenko, chercheur en sécurité chez **Socket**, « le compte fait partie d'une campagne de chaîne d'approvisionnement logicielle ciblant les développeurs, les runners CI et les environnements de build dans deux écosystèmes. »
Les gems Ruby sont conçues pour collecter automatiquement des informations sensibles, notamment les variables d'environnement, les clés SSH, les secrets **AWS**, `.npmrc`, `.netrc`, la configuration **GitHub** CLI et les identifiants RubyGems lors de l'installation. Ces données volées sont ensuite exfiltrées vers un point d'accès webhook contrôlé par l'attaquant.
Les modules Go présentent une gamme plus large de capacités malveillantes. Celles-ci incluent la falsification des workflows **GitHub** Actions, l'injection de faux wrappers Go, le vol de données de développeurs et l'ajout d'une clé publique SSH codée en dur au fichier `~/.ssh/authorized_keys`, accordant un accès à distance non autorisé. Les payloads diffèrent selon les modules.
Boychenko a expliqué : « Le module s'exécute via init(), détecte GITHUB_ENV et GITHUB_PATH, définit HTTP_PROXY et HTTPS_PROXY, écrit un exécutable go factice dans un répertoire de cache et ajoute ce répertoire au chemin du workflow afin que le wrapper soit sélectionné avant le binaire réel. Ce wrapper peut alors intercepter ou influencer les exécutions Go ultérieures tout en passant le contrôle au binaire légitime pour éviter de casser le job. »
### Étapes de Remédiation
Il est fortement conseillé aux utilisateurs ayant installé l'un des packages identifiés de prendre les mesures suivantes :
* Supprimez immédiatement les packages de leurs systèmes.
* Examinez minutieusement les systèmes à la recherche de tout signe d'accès non autorisé à des fichiers sensibles ou de modifications du fichier `~/.ssh/authorized_keys`.
* Faites pivoter tous les identifiants potentiellement exposés, y compris les clés SSH, les jetons d'API et les mots de passe.
* Inspectez attentivement les journaux réseau pour tout trafic HTTPS sortant dirigé vers le point d'exfiltration identifié.