Le Path Traversal, également connu sous le nom de Directory Traversal, se produit lorsqu'un utilisateur malveillant manipule des données fournies par l'utilisateur pour obtenir un accès non autorisé à des fichiers et des répertoires. Généralement, l'attaquant tentera d'accéder à des journaux et des identifiants situés dans des répertoires différents. Le Path Traversal n'est pas une nouvelle vulnérabilité et est activement exploité depuis les années 90, lorsque les serveurs web ont gagné en popularité, beaucoup s'appuyant sur des scripts Common Gateway Interface (CGI) pour exécuter du contenu dynamique côté serveur.
Avec une si longue histoire, le path traversal est-il toujours populaire aujourd'hui ? Nous avons mené une étude sur des projets open source et closed source afin de recueillir des données pour voir à quel point le path traversal était courant en 2024 et si nous nous améliorions, Spoiler : ce n'est pas le cas.
Exemple de Path Traversal
Alors, comment fonctionne exactement le path traversal ? Examinons un exemple simple.
Dans cette application simple, un utilisateur reçoit un fichier à télécharger via une variable dans l'URL.

Il y a un code Python backend simple qui gère la requête.
import os
def download_file(file):
base_directory = "/var/www/files"
file_path = os.path.join(base_directory, file)
if os.path.exists(file_path):
with open(file_path, 'rb') as f:
return f.read()
else:
return "File not found"
Maintenant que la variable est fournie dans l'URL, nous pouvons la modifier pour obtenir quelque chose comme ceci file=../../../../etc/passwd

Ici, l'attaquant utilise `../../` pour remonter dans l'arborescence des répertoires jusqu'au niveau racine du système et accéder au fichier transmis, potentiellement pour obtenir des informations sensibles.
Si vous voulez voir comment cette méthode pourrait être sécurisée, faites défiler vers le contenu bonus.
Dans des scénarios plus complexes impliquant plusieurs couches de répertoires ou des caractères encodés (par exemple, %2e%2e%2f), les attaquants peuvent contourner les filtres de base et obtenir un accès plus profond au système de fichiers.Le Path Traversal en chiffres
- 2,7 % de toutes les vulnérabilités découvertes dans les projets open source en 2024 jusqu'à présent étaient des path traversal.
- 3,5 % pour les projets closed-source !
- Une augmentation du nombre total de vulnérabilités de path traversal dans les projets open source passant de 742 (2023) à un nombre attendu de 1 000 (2024).
- En pourcentage de toutes les vulnérabilités, la traversée de chemin est de plus en plus courante avec une augmentation massive de 85 % dans les projets closed source.

Nos recherches ont porté sur l'étude des projets open source et closed source afin de révéler combien d'entre eux contenaient des vulnérabilités de type "path traversal" cachées.
Globalement, le nombre de vulnérabilités par path traversal est inférieur à d'autres que nous avons étudiées, telles que les injections de commande ou les injections SQL. Cependant, étant donné que cette vulnérabilité peut être très dangereuse et qu'il existe des solutions bien documentées pour la prévenir, il est alarmant de constater des chiffres aussi élevés. Il est encore plus préoccupant de voir les tendances de cette vulnérabilité évoluer dans la mauvaise direction.
Projets open source
Dans les projets open source, les vulnérabilités de type path traversal représentaient 2,6 % de toutes les vulnérabilités signalées en 2023. Ce chiffre a connu une légère augmentation en 2024, atteignant 2,75 %. Bien que cette augmentation puisse sembler marginale à première vue, elle souligne les défis persistants liés à la sécurisation des logiciels open source, même contre des vulnérabilités simples.
Projets Closed Source
La tendance la plus notable a été observée dans les projets à code source fermé où les incidents de traversée de chemin ont bondi de 1,9 % en 2023 à 3,5 % en 2024 — une augmentation substantielle de 85 % soulignant une tendance alarmante pour ce type de vulnérabilité.
Les mauvaises nouvelles ne s'arrêtent malheureusement pas là. Nous constatons toujours une augmentation du nombre global de vulnérabilités signalées dans les projets open source. Le nombre total de vulnérabilités par injection signalées dans les projets open source est passé de 742 en 2023 à 917 jusqu'à présent en 2024 (devrait atteindre 1 000).

Prévention du Path Traversal
La prévention des vulnérabilités par injection de commandes nécessite une approche multifacette :
Validation des entrées
- Assainir les entrées utilisateur: Supprimer ou encoder les caractères dangereux tels que
../,..\,..%2f, ou d'autres variations. - Approche par liste blanche : Définir un ensemble strict d'entrées autorisées (par exemple, noms de fichiers ou chemins) et rejeter tout ce qui ne figure pas dans cette liste.
Restreindre l'accès aux fichiers
- Utilisez un chroot jail ou un sandbox : Limitez l'accès aux fichiers de l'application à un répertoire restreint, en vous assurant qu'elle ne peut pas naviguer au-delà de l'arborescence de répertoires prévue.
- Définir les répertoires racine: Définir les répertoires de base et s'assurer que tous les chemins leur sont relatifs. Utiliser des API ou des frameworks qui imposent cela, tels que :
java.nio.file.Paths.get("baseDir").resolve(userInput).normalize()en Java.os.path.realpath()etos.path.commonpath()en Python.
API d'accès sécurisé aux fichiers
- Utiliser les méthodes d'accès sécurisé aux fichiers fournies par les bibliothèques ou frameworks modernes : Java, utiliser
Files.newInputStream()ouFiles.newBufferedReader()pour une gestion sécurisée des fichiers.
Dans Python, assurez-vous de valider les chemins de fichiers avant d'y accéder.
Utiliser les restrictions d'environnement
- Définir des restrictions permissions du système de fichiers:S'assurer que l'application ne dispose que des privilèges minimaux requis.
Interdire l'accès aux répertoires sensibles (par exemple,/etc,/var,/usr, et les répertoires personnels des utilisateurs). - Désactiver les fonctionnalités inutiles dans les serveurs web ou les frameworks (par exemple, le suivi des liens symboliques).
Tests automatisés
- Utilisez des outils comme Aikido pour analyser votre code source et votre application afin de découvrir ces vulnérabilités.
- Les outils SAST et DAST doivent être utilisés conjointement avec l'analyse de domaine et la sécurité cloud pour s'assurer qu'il n'y a pas de vulnérabilités de traversée de chemin cachées.
Utilisez un pare-feu intégré à l'application
- L'une des meilleures défenses contre les attaques par injection est un pare-feu intégré à l’application qui est capable de détecter et de bloquer les commandes malveillantes.
La voie à suivre
Le Path Traversal est une vulnérabilité présente depuis les débuts des applications web et bien qu'elle soit souvent assez simple, elle peut également constituer un exploit très dévastateur. Il est donc préoccupant qu'un pourcentage aussi élevé de projets soit encore confronté à de tels problèmes. Bien que 3,5 % ne semble pas être un chiffre élevé, il est assez remarquable que ce nombre gagne en popularité malgré sa menace continue et bien documentée.
Le Path Traversal n'est pas une vulnérabilité qui va disparaître, mais la bonne nouvelle est qu'il existe des moyens clairs de détecter ces vulnérabilités dans nos applications et de corriger les problèmes que nous rencontrons.
Contenu bonus
Incidents réels
Plusieurs violations ou vulnérabilités de grande envergure ont été signalées ces dernières années, impliquant la traversée de répertoire (path traversal) comme point d'entrée principal ou comme maillon d'une chaîne de vulnérabilités.
Microsoft IIS Unicode Exploit (2001)
L'un des premiers exploits de traversée de chemin de haut niveau ciblant les serveurs Microsoft IIS. Les attaquants utilisaient des chemins encodés pour contourner les mécanismes de validation (par exemple, en utilisant %c0%af pour représenter /). Cela leur a permis d'accéder et d'exécuter des fichiers en dehors du répertoire racine web.
Cela a permis le déploiement de malwares et la défiguration de nombreux sites web.
Fortinet VPN Traversée de chemin (2019)
Le VPN SSL de Fortinet s'est avéré présenter une vulnérabilité de traversée de répertoire (CVE-2018-13379). Des attaquants ont exploité cette faille pour accéder à des fichiers système sensibles, tels que les mots de passe en clair des utilisateurs VPN.
Des milliers d'identifiants VPN ont été divulgués en ligne, exposant les organisations à des accès non autorisés et à de nouvelles attaques.
Violation de données Capital One (2019)
Ce qui s'est passé: Alors que la cause principale était une vulnérabilité SSRF, l'attaquant a également exploité la traversée de répertoires pour accéder aux métadonnées des buckets AWS S3. L'attaquant a exploité des erreurs de configuration pour récupérer des fichiers de configuration qui auraient dû être inaccessibles.
Cela a exposé les données personnelles de 106 millions de demandeurs de cartes de crédit.
Path Traversal in Kubernetes Dashboard (2020)
Le tableau de bord Kubernetes présentait une faille de traversée de répertoire (CVE-2020-8563). Des attaquants l'ont exploitée pour lire des fichiers sensibles dans le conteneur, y compris les secrets stockés dans /etc.
Sécurisez votre logiciel dès maintenant.



.avif)
