python bug dangers logiciels

Python : tout savoir sur le bug qui menace le monde du logiciel open-source

Une vulnérabilité découverte en 2007 dans le code du langage Python n’a jamais été patchée, et refait surface aujourd’hui suite à sa redécouverte par les chercheurs de Trellix. Au total, plus de 350 000 projets open-source disponibles sur GitHub sont impactés par ce bug permettant l’exécution de code par les hackers. Un grave problème qui remet en question le niveau de cybersécurité du monde du logiciel open-source…

Lorsqu’une vulnérabilité est découverte dans un logiciel, les développeurs se hâtent de le corriger en déployant un correctif. Ceci évite que des hackers puissent l’exploiter pour leurs cyberattaques.

Malheureusement, depuis sa découverte en 2007, la vulnérabilité CVE-2007-4559 du langage de programmation Python n’a jamais été patchée. La seule mitigation apportée à ce bug est une mise à jour de la documentation, avertissant les développeurs au sujet du risque…

Quinze ans plus tard, cette vulnérabilité refait surface. Pour cause, elle affecte plus de 350 000 projets open-source et pourrait mener à une cyberattaque par exploitation de code.

Une vulnérabilité négligée depuis 2007

code python bug

La vulnérabilité CVE-2007-4559 se trouve dans le package tarfile de Python, dans le code utilisant la fonction tarfile.extract() ou tarfile.extractall(). Il s’agit d’un bug de traverse pouvant permettre à un hacker d’écraser des fichiers arbitraires.

Les détails techniques sur cette vulnérabilité sont indiqués depuis sa découverte en août 2007. Et même s’il n’existe aucune preuve d’une exploitation lors d’une cyberattaque à ce jour, elle représente un risque pour la chaîne logistique des logiciels.

Il y a quelques mois de cela, le chercheur en sécurité Kasimir Schulz de Trellix a de nouveau découvert cette faille alors qu’il menait l’enquête sur un autre problème de sécurité.

Selon Charles McFarland, autre chercheur de Trellix, « un échec d’écriture de code de sécurité pour assainir les fichiers membres avant d’appeler tarfile.extract() tarfile.extractall() entraîne une vulnérabilité de traverse, permettant à un acteur malveillant d’accéder au système fichier ».

Cette faille provient du fait que le code dans la fonction « extract » du module tarfile de Python se fie explicitement à l’information dans l’objet TarInfo et rejoint le chemin qui est passé à la fonction « extract » et au nom dans l’objet TarInfo.

Moins d’un mois après la découverte, un message du tracker de bug de Python a annoncé que le problème était clos. En réalité, la seule résolution apportée était une mise à jour de la documentation avertissant qu’il « peut être dangereux d’extraire les archives de sources inconnues »…

Plus de 350 000 projets impactés

En analysant l’impact, les chercheurs de Trellix ont réalisé que cette vulnérabilité était présente dans plusieurs milliers de projets logiciels, open-source ou non.

Les chercheurs ont extrait un ensemble de 257 répertoires plus susceptibles de contenir le code vulnérable, et ont vérifié 175 d’entre eux pour voir s’ils étaient affectés. Au total, 61% se sont révélés vulnérables

En lançant une vérification automatisée sur le reste des répertoires, le taux de projets impactés est passé à 65%. Cette analyse démontre que le bug s’est largement répandu depuis 15 ans

Toutefois, cet ensemble d’échantillons servait uniquement de point de départ. Avec l’aide de GitHub, les chercheurs de Trellix ont pu dénombrer un total de 588 840 dépôts de code contenant « import tarfile » dans leur code Python.

En appliquant le taux de vulnérabilité de 61% obtenu lors des vérifications manuelles, Trellix conclut que plus de 350 000 dépôts de code disponibles sur GitHub sont vulnérables aux cyberattaques.

Une large part de ces dépôts sont utilisés par des outils de Machine Learning tels que GitHub , visant à aider les développeurs à terminer leurs projets plus rapidement.

Ces outils d’automatisation reposent sur le code de centaines de milliers de dépôts pour fournir des options d’autocomplétion. Par conséquent, lorsqu’ils fournissent un code mal sécurisé, le problème se propage à d’autres projets sans même que les développeurs le sachent…

En poursuivant son enquête, Trellix a découvert que le code open-source vulnérable à CVE-2007-4559 est répandu dans un large nombre d’industries. Les secteurs les plus impactés sont toutefois ceux du développement, du web et du machine learning.

industries faille python

Comment exploiter la vulnérabilité CVE-2007-4559 ?

Dans un billet technique publié sur son blog, le chercheur Kasimir Schulz de Trellix, ayant redécouvert le bug, décrit les étapes simples permettant d’exploiter CVE-2007-4559 dans la version Windows de Spyder IDE : un environnement de développement intégré open-source et cross-platform pour la programmation scientifique.

YouTube video

Toutefois, la vulnérabilité peut aussi être exploitée sur Linux. Les chercheurs sont parvenus à accéder au système fichier et à exécuter du code dans un sur le service de gestion d’infrastructure Polemarch IT.

YouTube video

Comment patcher les logiciels impactés ?

Trellix ne s’est pas contenté d’attirer l’attention sur cette vulnérabilité et les risques qu’elle induit, mais a aussi créé des correctifs pour un peu plus de 11 000 projets impactés.

Ces patches seront disponibles par le biais d’une fourche de chaque dépôt de code impacté. Ils seront ajoutés au projet principal ultérieurement via des pull-requests.

Dans les semaines à venir, compte tenu du large nombre de dépôts affectés, les chercheurs s’attendent à ce que plus de 70 000 projets reçoivent un correctif.

Toutefois, parvenir à corriger l’intégralité des projets impactés ne sera pas une mince affaire. Les requêtes de fusion devront être acceptées par les mainteneurs des projets…

La cybersécurité de l’open-source est-elle insuffisante ?

La mise en lumière de cette vieille vulnérabilité oubliée remet en question la sécurité du monde de l’open-source. Selon Tenable, il est urgent d’allouer davantage de ressources aux projets open source. La firme de cybersécurité américaine insiste d’ailleurs sur ce point depuis la découverte de Log4j.

Selon Satnam Narang, Senior Staff Research Engineer chez Tenable, « cette situation rappelle les défis que pose l’intégration de code source ouvert dans les projets logiciels, en particulier ceux utilisés dans les environnements d’entreprise ».

Ainsi, « alors que les retombées de la découverte de Log4Shell dans la bibliothèque Log4j remontent à près d’un an, les chercheurs continuent d’identifier des faiblesses dans la chaîne d’approvisionnement, ce qui souligne le besoin continu de ressources supplémentaires pour aider à identifier et à traiter les vulnérabilités dans certaines des bibliothèques et des logiciels les plus courants utilisés aujourd’hui par les organisations ».

En guise de solutions, le spécialiste évoque « des initiatives telles que les niveaux de la chaîne d’approvisionnement pour les artefacts logiciels (SLSA) et l’inventaire logiciels (SBOM), ainsi que des projets tels qu’Alpha-Omega sous l’égide de l’Open Source Security Foundation, conçus pour combler le fossé de la sécurité au sein de la communauté open source, car de nombreux développeurs sont souvent des contributeurs non rémunérés qui donnent de leur temps ».

Malheureusement, « il n’existe pas de solution unique pour résoudre le problème de la sécurité de la chaîne d’approvisionnement des logiciels, mais les propositions ci-dessus offrent la possibilité de contribuer à faire une différence significative. Des rapports comme celui-ci ne seront certainement pas les derniers, c’est pourquoi la poursuite des initiatives ci-dessus est cruciale »…

https://www.youtube.com/watch?v=vBNSQIxlW2o

Restez à la pointe de l’information avec LEBIGDATA.FR !

Abonnez-vous à notre chaîne YouTube et rejoignez-nous sur Google Actualités pour garder une longueur d’avance.

Newsletter

Envie de ne louper aucun de nos articles ? Abonnez vous pour recevoir chaque semaine les meilleurs actualités avant tout le monde.

Cliquez pour commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *