Comprendre le bogue de traversée de chemin dans le module tarfile de Python
Récemment, une équipe de chercheurs en sécurité a annoncé la découverte d'un bogue vieux de quinze ans dans la fonctionnalité d'extraction de fichiers tar de Python. La vulnérabilité a été divulguée pour la première fois en 2007 et répertoriée sous le nom de CVE-2007-4559. Une note a été ajoutée à la documentation officielle de Python, mais le bogue lui-même n'a pas été corrigé.
Cette vulnérabilité pourrait avoir un impact sur des milliers de projets logiciels, mais de nombreuses personnes ne sont pas familières avec la situation ou la façon de la gérer. C'est pourquoi, ici à Secure Code Warriornous vous donnons la possibilité de simuler vous-même l'exploitation de cette vulnérabilité afin d'en voir l'impact et d'acquérir une expérience pratique des mécanismes de ce bogue persistant, de sorte que vous puissiez mieux protéger votre application !
Essayez la mission simulée maintenant.
La vulnérabilité : traversée de chemin lors de l'extraction d'un fichier tar
La traversée d'un chemin ou d'un répertoire se produit lorsque des données utilisateur non analysées sont utilisées pour construire un chemin de fichier, ce qui permet à un pirate d'accéder à des fichiers et de les écraser, voire d'exécuter un code arbitraire.
La vulnérabilité se trouve dans le module tarfile de Python. Un fichier tar (archive sur bande) est un fichier unique, appelé archive. Il regroupe plusieurs fichiers avec leurs métadonnées et est généralement reconnu par l'extension .tar.gz ou .tgz. Chaque membre de l'archive peut être représenté par un objet TarInfo, qui contient des métadonnées, telles que le nom du fichier, l'heure de modification, la propriété, etc.
Le risque provient de la capacité des archives à être extraites à nouveau.
Lors de l'extraction, chaque membre a besoin d'un chemin d'accès pour être écrit. Cet emplacement est créé en joignant le chemin de base au nom du fichier :

Une fois ce chemin créé, il est transmis à la commande tarfile.extract ou tarfile.extractall pour effectuer l'extraction :

Le problème réside dans l'absence de vérification du nom de fichier. Un attaquant pourrait renommer des fichiers pour y inclure des caractères de traversée de chemin, tels que le point, la barre oblique (../), ce qui amènerait le fichier à sortir du répertoire dans lequel il est censé se trouver et à écraser des fichiers arbitraires. Cela pourrait éventuellement conduire à l'exécution de code à distance, ce qui est propice à l'exploitation.
La vulnérabilité apparaît dans d'autres scénarios, si vous savez comment l'identifier. Outre la gestion des fichiers tar par Python, la vulnérabilité existe dans l'extraction des fichiers zip. Vous la connaissez peut-être sous un autre nom, comme la vulnérabilité zip slip, qui s'est manifestée dans d'autres langages que Python !
Comment pouvez-vous réduire les risques ?
Bien que la vulnérabilité soit connue depuis des années, les responsables de Python considèrent que la fonctionnalité d'extraction fait ce qu'elle est censée faire. Dans ce cas, certains diront qu'il s'agit d'une fonctionnalité et non d'un bogue. Malheureusement, les développeurs ne peuvent pas toujours éviter d'extraire des fichiers tar ou zip d'une source inconnue. C'est à eux qu'il incombe d'assainir les entrées non fiables pour éviter les vulnérabilités de traversée de chemin dans le cadre de pratiques de développement sécurisées.
Vous souhaitez en savoir plus sur la manière d'écrire du code sécurisé et de réduire les risques avec Python ?
Essayez gratuitement notre défi Python.
Si vous souhaitez obtenir d'autres directives de codage gratuites, consultez Secure Code Coach pour vous aider à rester au fait des pratiques de codage sécurisées.


Récemment, une équipe de chercheurs en sécurité a annoncé la découverte d'un bogue vieux de quinze ans dans la fonctionnalité d'extraction de fichiers tar de Python. La vulnérabilité a été divulguée pour la première fois en 2007 et répertoriée sous le nom de CVE-2007-4559. Une note a été ajoutée à la documentation officielle de Python, mais le bogue lui-même n'a pas été corrigé.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationLaura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.


Récemment, une équipe de chercheurs en sécurité a annoncé la découverte d'un bogue vieux de quinze ans dans la fonctionnalité d'extraction de fichiers tar de Python. La vulnérabilité a été divulguée pour la première fois en 2007 et répertoriée sous le nom de CVE-2007-4559. Une note a été ajoutée à la documentation officielle de Python, mais le bogue lui-même n'a pas été corrigé.
Cette vulnérabilité pourrait avoir un impact sur des milliers de projets logiciels, mais de nombreuses personnes ne sont pas familières avec la situation ou la façon de la gérer. C'est pourquoi, ici à Secure Code Warriornous vous donnons la possibilité de simuler vous-même l'exploitation de cette vulnérabilité afin d'en voir l'impact et d'acquérir une expérience pratique des mécanismes de ce bogue persistant, de sorte que vous puissiez mieux protéger votre application !
Essayez la mission simulée maintenant.
La vulnérabilité : traversée de chemin lors de l'extraction d'un fichier tar
La traversée d'un chemin ou d'un répertoire se produit lorsque des données utilisateur non analysées sont utilisées pour construire un chemin de fichier, ce qui permet à un pirate d'accéder à des fichiers et de les écraser, voire d'exécuter un code arbitraire.
La vulnérabilité se trouve dans le module tarfile de Python. Un fichier tar (archive sur bande) est un fichier unique, appelé archive. Il regroupe plusieurs fichiers avec leurs métadonnées et est généralement reconnu par l'extension .tar.gz ou .tgz. Chaque membre de l'archive peut être représenté par un objet TarInfo, qui contient des métadonnées, telles que le nom du fichier, l'heure de modification, la propriété, etc.
Le risque provient de la capacité des archives à être extraites à nouveau.
Lors de l'extraction, chaque membre a besoin d'un chemin d'accès pour être écrit. Cet emplacement est créé en joignant le chemin de base au nom du fichier :

Une fois ce chemin créé, il est transmis à la commande tarfile.extract ou tarfile.extractall pour effectuer l'extraction :

Le problème réside dans l'absence de vérification du nom de fichier. Un attaquant pourrait renommer des fichiers pour y inclure des caractères de traversée de chemin, tels que le point, la barre oblique (../), ce qui amènerait le fichier à sortir du répertoire dans lequel il est censé se trouver et à écraser des fichiers arbitraires. Cela pourrait éventuellement conduire à l'exécution de code à distance, ce qui est propice à l'exploitation.
La vulnérabilité apparaît dans d'autres scénarios, si vous savez comment l'identifier. Outre la gestion des fichiers tar par Python, la vulnérabilité existe dans l'extraction des fichiers zip. Vous la connaissez peut-être sous un autre nom, comme la vulnérabilité zip slip, qui s'est manifestée dans d'autres langages que Python !
Comment pouvez-vous réduire les risques ?
Bien que la vulnérabilité soit connue depuis des années, les responsables de Python considèrent que la fonctionnalité d'extraction fait ce qu'elle est censée faire. Dans ce cas, certains diront qu'il s'agit d'une fonctionnalité et non d'un bogue. Malheureusement, les développeurs ne peuvent pas toujours éviter d'extraire des fichiers tar ou zip d'une source inconnue. C'est à eux qu'il incombe d'assainir les entrées non fiables pour éviter les vulnérabilités de traversée de chemin dans le cadre de pratiques de développement sécurisées.
Vous souhaitez en savoir plus sur la manière d'écrire du code sécurisé et de réduire les risques avec Python ?
Essayez gratuitement notre défi Python.
Si vous souhaitez obtenir d'autres directives de codage gratuites, consultez Secure Code Coach pour vous aider à rester au fait des pratiques de codage sécurisées.

Récemment, une équipe de chercheurs en sécurité a annoncé la découverte d'un bogue vieux de quinze ans dans la fonctionnalité d'extraction de fichiers tar de Python. La vulnérabilité a été divulguée pour la première fois en 2007 et répertoriée sous le nom de CVE-2007-4559. Une note a été ajoutée à la documentation officielle de Python, mais le bogue lui-même n'a pas été corrigé.
Cette vulnérabilité pourrait avoir un impact sur des milliers de projets logiciels, mais de nombreuses personnes ne sont pas familières avec la situation ou la façon de la gérer. C'est pourquoi, ici à Secure Code Warriornous vous donnons la possibilité de simuler vous-même l'exploitation de cette vulnérabilité afin d'en voir l'impact et d'acquérir une expérience pratique des mécanismes de ce bogue persistant, de sorte que vous puissiez mieux protéger votre application !
Essayez la mission simulée maintenant.
La vulnérabilité : traversée de chemin lors de l'extraction d'un fichier tar
La traversée d'un chemin ou d'un répertoire se produit lorsque des données utilisateur non analysées sont utilisées pour construire un chemin de fichier, ce qui permet à un pirate d'accéder à des fichiers et de les écraser, voire d'exécuter un code arbitraire.
La vulnérabilité se trouve dans le module tarfile de Python. Un fichier tar (archive sur bande) est un fichier unique, appelé archive. Il regroupe plusieurs fichiers avec leurs métadonnées et est généralement reconnu par l'extension .tar.gz ou .tgz. Chaque membre de l'archive peut être représenté par un objet TarInfo, qui contient des métadonnées, telles que le nom du fichier, l'heure de modification, la propriété, etc.
Le risque provient de la capacité des archives à être extraites à nouveau.
Lors de l'extraction, chaque membre a besoin d'un chemin d'accès pour être écrit. Cet emplacement est créé en joignant le chemin de base au nom du fichier :

Une fois ce chemin créé, il est transmis à la commande tarfile.extract ou tarfile.extractall pour effectuer l'extraction :

Le problème réside dans l'absence de vérification du nom de fichier. Un attaquant pourrait renommer des fichiers pour y inclure des caractères de traversée de chemin, tels que le point, la barre oblique (../), ce qui amènerait le fichier à sortir du répertoire dans lequel il est censé se trouver et à écraser des fichiers arbitraires. Cela pourrait éventuellement conduire à l'exécution de code à distance, ce qui est propice à l'exploitation.
La vulnérabilité apparaît dans d'autres scénarios, si vous savez comment l'identifier. Outre la gestion des fichiers tar par Python, la vulnérabilité existe dans l'extraction des fichiers zip. Vous la connaissez peut-être sous un autre nom, comme la vulnérabilité zip slip, qui s'est manifestée dans d'autres langages que Python !
Comment pouvez-vous réduire les risques ?
Bien que la vulnérabilité soit connue depuis des années, les responsables de Python considèrent que la fonctionnalité d'extraction fait ce qu'elle est censée faire. Dans ce cas, certains diront qu'il s'agit d'une fonctionnalité et non d'un bogue. Malheureusement, les développeurs ne peuvent pas toujours éviter d'extraire des fichiers tar ou zip d'une source inconnue. C'est à eux qu'il incombe d'assainir les entrées non fiables pour éviter les vulnérabilités de traversée de chemin dans le cadre de pratiques de développement sécurisées.
Vous souhaitez en savoir plus sur la manière d'écrire du code sécurisé et de réduire les risques avec Python ?
Essayez gratuitement notre défi Python.
Si vous souhaitez obtenir d'autres directives de codage gratuites, consultez Secure Code Coach pour vous aider à rester au fait des pratiques de codage sécurisées.

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationLaura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.
Récemment, une équipe de chercheurs en sécurité a annoncé la découverte d'un bogue vieux de quinze ans dans la fonctionnalité d'extraction de fichiers tar de Python. La vulnérabilité a été divulguée pour la première fois en 2007 et répertoriée sous le nom de CVE-2007-4559. Une note a été ajoutée à la documentation officielle de Python, mais le bogue lui-même n'a pas été corrigé.
Cette vulnérabilité pourrait avoir un impact sur des milliers de projets logiciels, mais de nombreuses personnes ne sont pas familières avec la situation ou la façon de la gérer. C'est pourquoi, ici à Secure Code Warriornous vous donnons la possibilité de simuler vous-même l'exploitation de cette vulnérabilité afin d'en voir l'impact et d'acquérir une expérience pratique des mécanismes de ce bogue persistant, de sorte que vous puissiez mieux protéger votre application !
Essayez la mission simulée maintenant.
La vulnérabilité : traversée de chemin lors de l'extraction d'un fichier tar
La traversée d'un chemin ou d'un répertoire se produit lorsque des données utilisateur non analysées sont utilisées pour construire un chemin de fichier, ce qui permet à un pirate d'accéder à des fichiers et de les écraser, voire d'exécuter un code arbitraire.
La vulnérabilité se trouve dans le module tarfile de Python. Un fichier tar (archive sur bande) est un fichier unique, appelé archive. Il regroupe plusieurs fichiers avec leurs métadonnées et est généralement reconnu par l'extension .tar.gz ou .tgz. Chaque membre de l'archive peut être représenté par un objet TarInfo, qui contient des métadonnées, telles que le nom du fichier, l'heure de modification, la propriété, etc.
Le risque provient de la capacité des archives à être extraites à nouveau.
Lors de l'extraction, chaque membre a besoin d'un chemin d'accès pour être écrit. Cet emplacement est créé en joignant le chemin de base au nom du fichier :

Une fois ce chemin créé, il est transmis à la commande tarfile.extract ou tarfile.extractall pour effectuer l'extraction :

Le problème réside dans l'absence de vérification du nom de fichier. Un attaquant pourrait renommer des fichiers pour y inclure des caractères de traversée de chemin, tels que le point, la barre oblique (../), ce qui amènerait le fichier à sortir du répertoire dans lequel il est censé se trouver et à écraser des fichiers arbitraires. Cela pourrait éventuellement conduire à l'exécution de code à distance, ce qui est propice à l'exploitation.
La vulnérabilité apparaît dans d'autres scénarios, si vous savez comment l'identifier. Outre la gestion des fichiers tar par Python, la vulnérabilité existe dans l'extraction des fichiers zip. Vous la connaissez peut-être sous un autre nom, comme la vulnérabilité zip slip, qui s'est manifestée dans d'autres langages que Python !
Comment pouvez-vous réduire les risques ?
Bien que la vulnérabilité soit connue depuis des années, les responsables de Python considèrent que la fonctionnalité d'extraction fait ce qu'elle est censée faire. Dans ce cas, certains diront qu'il s'agit d'une fonctionnalité et non d'un bogue. Malheureusement, les développeurs ne peuvent pas toujours éviter d'extraire des fichiers tar ou zip d'une source inconnue. C'est à eux qu'il incombe d'assainir les entrées non fiables pour éviter les vulnérabilités de traversée de chemin dans le cadre de pratiques de développement sécurisées.
Vous souhaitez en savoir plus sur la manière d'écrire du code sécurisé et de réduire les risques avec Python ?
Essayez gratuitement notre défi Python.
Si vous souhaitez obtenir d'autres directives de codage gratuites, consultez Secure Code Coach pour vous aider à rester au fait des pratiques de codage sécurisées.
Table des matières

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
AI Coding Assistants : Un guide de navigation sécurisée pour la prochaine génération de développeurs
Les grands modèles linguistiques offrent des avantages irrésistibles en termes de rapidité et de productivité, mais ils présentent également des risques indéniables pour l'entreprise. Les garde-fous traditionnels ne suffisent pas à contrôler le déluge. Les développeurs ont besoin de compétences précises et vérifiées en matière de sécurité pour identifier et prévenir les failles de sécurité dès le début du cycle de développement du logiciel.
Sécurité dès la conception : Définir les meilleures pratiques, permettre aux développeurs et évaluer les résultats de la sécurité préventive
Dans ce document de recherche, les cofondateurs de Secure Code Warrior , Pieter Danhieux et Matias Madou, Ph.D., ainsi que des contributeurs experts, Chris Inglis, ancien directeur national américain de la cybernétique (aujourd'hui conseiller stratégique du Paladin Capital Group), et Devin Lynch, directeur principal du Paladin Global Institute, révèleront les principales conclusions de plus de vingt entretiens approfondis avec des responsables de la sécurité des entreprises, y compris des RSSI, un vice-président de la sécurité des applications et des professionnels de la sécurité des logiciels.
Ressources pour vous aider à démarrer
Définir la norme : SCW publie des règles de sécurité gratuites pour le codage de l'IA sur GitHub
Le développement assisté par IA n'est plus un horizon : il est bel et bien là, et il transforme rapidement la manière dont les logiciels sont écrits. Des outils comme GitHub Copilot, Cline, Roo, Cursor, Aider et Windsurf transforment les développeurs en copilotes, permettant des itérations plus rapides et accélérant tout, du prototypage aux projets de refactorisation majeurs.
Bouclez la boucle des vulnérabilités avec Secure Code Warrior + HackerOne
Secure Code Warrior est heureux d'annoncer sa nouvelle intégration avec HackerOne, un leader dans les solutions de sécurité offensive. Ensemble, nous construisons un écosystème puissant et intégré. HackerOne met le doigt sur les vulnérabilités dans les environnements réels, en exposant le "quoi" et le "où" des problèmes de sécurité.
Révélation : Comment l'industrie du cyberespace définit la notion de "Secure by Design" (sécurité dès la conception)
Dans notre dernier livre blanc, nos cofondateurs, Pieter Danhieux et Matias Madou, Ph.D., ont rencontré plus de vingt responsables de la sécurité d'entreprise, notamment des RSSI, des responsables AppSec et des professionnels de la sécurité, afin d'identifier les principales pièces de ce puzzle et de découvrir la réalité qui se cache derrière le mouvement Secure by Design. Il s'agit d'une ambition partagée par les équipes de sécurité, mais il n'y a pas de manuel de jeu commun.