Dans une autre découverte qui pourrait exposer les développeurs à un risque accru d’attaque de la chaîne d’approvisionnement, il est apparu que près d’un tiers des packages de PyPI, le Python Package Index, déclenchent l’exécution automatique du code lors de leur téléchargement.
« Une fonctionnalité inquiétante de pip/PyPI permet au code de s’exécuter automatiquement lorsque les développeurs téléchargent simplement un package », a déclaré Yehuda Gelb, chercheur chez Checkmarx. a dit dans un rapport technique publié cette semaine.
« En outre, cette fonctionnalité est alarmante car une grande partie des packages malveillants que nous trouvons dans la nature utilisent cette fonctionnalité d’exécution de code lors de l’installation pour atteindre des taux d’infection plus élevés. »
L’un des moyens par lesquels les packages peuvent être installés pour Python consiste à exécuter le « installation de pip« , qui, à son tour, appelle un fichier appelé « setup.py » fourni avec le module.
« setup.py », comme son nom l’indique, est un script de configuration qui est utilisé pour spécifier les métadonnées associées au package, y compris ses dépendances.
Alors que les acteurs de la menace ont eu recours à l’incorporation de code malveillant dans le fichier setup.py, Checkmarx a découvert que les adversaires pouvaient atteindre les mêmes objectifs en exécutant ce qu’on appelle un « téléchargement de pip » commande.
« pip download effectue la même résolution et le même téléchargement que pip install, mais au lieu d’installer les dépendances, il collecte les distributions téléchargées dans le répertoire fourni (par défaut dans le répertoire actuel) », indique la documentation.
En d’autres termes, la commande peut être utilisée pour télécharger un package Python sans avoir à l’installer sur le système. Mais il s’avère que l’exécution de la commande de téléchargement exécute également le script « setup.py » susmentionné, entraînant l’exécution du code malveillant qu’il contient.
Cependant, il convient de noter que le problème ne se produit que lorsque le package contient un fichier tar.gz au lieu d’un fichier de roue (.whl), qui « coupe l’exécution de ‘setup.py’ de l’équation ».
« Les développeurs qui choisissent de télécharger, au lieu d’installer des packages, s’attendent raisonnablement à ce qu’aucun code ne s’exécute sur la machine lors du téléchargement des fichiers », a noté Gelb, le qualifiant de problème de conception plutôt qu’un bug.
Bien que pip utilise par défaut des roues au lieu de fichiers tar.gz, un attaquant pourrait profiter de ce comportement pour publier intentionnellement des packages python sans fichier .whl, entraînant l’exécution du code malveillant présent dans le script de configuration.
« Lorsqu’un utilisateur télécharge un package python à partir de PyPi, pip utilisera de préférence le fichier .whl, mais reviendra au fichier tar.gz si le fichier .whl fait défaut », a déclaré Gelb.
Les conclusions viennent alors que la National Security Agency (NSA) des États-Unis, ainsi que la Cybersecurity and Infrastructure Security Agency (CISA) et le Bureau du directeur du renseignement national (ODNI), orientation publiée pour sécuriser la chaîne d’approvisionnement des logiciels.
« Alors que la cybermenace continue de devenir plus sophistiquée, les adversaires ont commencé à attaquer la chaîne d’approvisionnement des logiciels, plutôt que de s’appuyer sur des vulnérabilités connues du public », a déclaré l’agence. a dit. « Tant que tous les DevOps ne seront pas des DevSecOps, le cycle de vie du développement logiciel sera menacé. »