Un analyseur a été publié et a identifié 200 packages malveillants dans NPM et PyPI

L'OpenSSF (Open Source Security Foundation), formée par la Linux Foundation et visant à améliorer la sécurité des logiciels open source, a présenté le projet ouvert Package Analysis, qui développe un système d'analyse de la présence de code malveillant dans les packages. Le code du projet est écrit en Go et distribué sous la licence Apache 2.0. Une analyse préliminaire des référentiels NPM et PyPI à l'aide des outils proposés nous a permis d'identifier plus de 200 packages malveillants non détectés auparavant.

La majeure partie des packages problématiques identifiés manipulent l'intersection de noms avec des dépendances internes non publiques des projets (attaque de confusion des dépendances) ou utilisent des méthodes de typosquatting (attribution de noms similaires aux noms de bibliothèques populaires), et appellent également des scripts qui accèdent à des hôtes externes pendant le processus d'installation. Selon les développeurs de Package Analysis, la plupart des packages problématiques identifiés ont très probablement été créés par des chercheurs en sécurité participant à des programmes de bug bounty, car les données envoyées sont limitées au nom de l'utilisateur et du système, et les actions sont effectuées explicitement, sans tentatives de cacher leur comportement.

Les packages comportant une activité malveillante incluent :

  • Package PyPI discordcmd, qui enregistre l'envoi de requêtes atypiques à raw.githubusercontent.com, Discord API et ipinfo.io. Le package spécifié a téléchargé le code de la porte dérobée depuis GitHub et l'a installé dans le répertoire client Discord Windows, après quoi il a lancé le processus de recherche de jetons Discord dans le système de fichiers et de leur envoi à un serveur Discord externe contrôlé par les attaquants.
  • Le package colourss NPM a également tenté d'envoyer des jetons d'un compte Discord vers un serveur externe.
  • Package NPM @roku-web-core/ajax - pendant le processus d'installation, il a envoyé des données sur le système et lancé un gestionnaire (shell inversé) qui acceptait les connexions externes et lançait des commandes.
  • Package PyPI secrevtwo - lance un shell inversé lors de l'importation d'un module spécifique.
  • Package NPM random-vouchercode-generator - après avoir importé la bibliothèque, il a envoyé une requête à un serveur externe, qui a renvoyé la commande et l'heure à laquelle elle doit être exécutée.

Le travail de Package Analysis se résume à analyser les packages de code dans le code source pour établir des connexions réseau, accéder aux fichiers et exécuter des commandes. De plus, les changements dans l'état des packages sont surveillés pour déterminer l'ajout d'insertions malveillantes dans l'une des versions d'un logiciel initialement inoffensif. Pour surveiller l'apparition de nouveaux packages dans les référentiels et apporter des modifications aux packages précédemment publiés, la boîte à outils Package Feeds est utilisée, qui unifie le travail avec les référentiels NPM, PyPI, Go, RubyGems, Packagist, NuGet et Crate.

Package Analysis comprend trois composants de base qui peuvent être utilisés à la fois conjointement et séparément :

  • Planificateur pour lancer le travail d'analyse de packages basé sur les données des flux de packages.
  • Analyseur qui examine directement un package et évalue son comportement à l'aide de techniques d'analyse statique et de traçage dynamique. Le test est réalisé dans un environnement isolé.
  • Un chargeur qui place les résultats des tests dans le stockage BigQuery.

Source: opennet.ru

Ajouter un commentaire