Les chercheurs en sécurité de Trellix ont révélé une vulnérabilité majeure dans la bibliothèque Python tarfile, qui pourrait être exploitée lors d’attaques visant la chaîne d’approvisionnement logicielle . Les chercheurs estiment qu’elle pourrait être utilisée contre des organisations à grande échelle, ce qui pourrait entraîner des attaques aussi graves que celle qui a frappé SolarWinds il y a deux ans.
Ce qui est peut-être plus préoccupant, c’est que la vulnérabilité a été divulguée pour la première fois il y a 15 ans mais reste non corrigée. Comme la chaîne d’approvisionnement logicielle est extrêmement complexe et comporte de nombreuses interdépendances, même si les projets n’ont pas besoin directement du module, celui-ci peut tout de même être installé par un autre paquet.
De fait, le module Python est souvent utilisé par des frameworks et des applications populaires d’apprentissage automatique, ce qui augmente considérablement le risque.
Voir les principaux outils de débogage et de sécurité du code
Une vulnérabilité de traversée de chemins expose les dépôts
Selon Trellix, des centaines de milliers de dépôts sont vulnérables à l’attaque par traversée de chemins, et un attaquant potentiel pourrait l’utiliser pour écraser des fichiers arbitraires en ajoutant simplement « ../ » (séquence point point) aux noms de fichiers d’une archive TAR. Les chercheurs ont conclu que « dans la plupart des cas, un attaquant peut obtenir une exécution de code grâce à l’écriture du fichier ».
L’exploitation semble très facile à réaliser avec « seulement 6 lignes de code » :
Le module tarfile fournit des fonctions permettant d’extraire et d’écrire des fichiers sur le système de fichiers. Comme le code fait excessivement confiance à ses entrées et assemble les chemins transmis aux fonctions d’extraction, il peut être détourné.
Les chercheurs ont réalisé plusieurs vidéos pour présenter l’exploitation, dont une où ils obtiennent des privilèges administrateur grâce à la faille en exploitant Spyder IDE, un environnement open source gratuit et populaire conçu en Python.
Cette approche est assez courante, ce qui rend la vulnérabilité préoccupante. Il n’est pas rare non plus que des paquets utilisent la même dépendance pour éviter de « réinventer la roue », ce qui est un argument valable dans certaines situations, mais peut élargir la surface d’attaque dans d’autres cas.
La documentation Python met en garde contre ce problème
Il convient de noter que la documentation officielle de Python met explicitement en garde contre ce problème :
Les chercheurs ont publié un petit script Python baptisé « creosote », qui parcourt récursivement les répertoires à la recherche de fichiers .py et affiche ceux qui sont vulnérables. Les administrateurs et les utilisateurs peuvent l’utiliser pour vérifier la présence de vulnérabilités dans leur code.
L’exploitation ne nécessite « que peu ou pas de connaissances sur les sujets complexes liés à la sécurité », ont souligné les chercheurs, et la vulnérabilité est très répandue dans la nature. Il est donc recommandé d’analyser votre code source ainsi que les autres outils fondés sur Python.
Dans une déclaration à eSecurity Planet, les chercheurs de Trellix ont déclaré que « du fait de la position adoptée par les créateurs de Python, la solution actuelle consiste pour les développeurs à ajouter du code d’atténuation autour de l’appel de fonction vulnérable, puis à en partager une nouvelle version avec leurs clients. C’est pourquoi il est essentiel que les équipes effectuent des recherches sur les vulnérabilités : en général, les vulnérabilités à grande échelle peuvent être corrigées ou faire l’objet d’une solution de contournement simple une fois découvertes. »
À lire ensuite : les meilleurs outils de gestion des risques liés aux tiers (TPRM)





