Applications, sites et API

Particuliers et entreprises

Traversée de répertoires

Path traversal

Un chemin manipulé donne accès à des fichiers hors du dossier prévu.

Révision éditoriale : Comprendre : 2 min · Cas technique et détails : 4 min
Je pense être concerné : que faire ?
Illustration pédagogique : traversée de répertoires.

Comprendre et agir

À la fin de cette lecture, vous pourrez expliquer le piège et choisir une première réaction adaptée à votre rôle. Aucun prérequis informatique n’est nécessaire.

Une situation concrète

Un service permet de télécharger une facture. Il attend un nom de document, mais utilise cette valeur pour chercher un fichier sans vérifier sa destination finale. Un attaquant peut alors viser un autre dossier que celui prévu.

Comment cela fonctionne

La traversée de répertoires fait sortir un accès fichier de son espace autorisé. Elle peut permettre une lecture, mais aussi une écriture lors d’un dépôt ou de l’extraction d’une archive. L’image simple est celle d’un guichet chargé de remettre un dossier précis qui accepterait finalement d’aller fouiller toute l’armoire.

Comment le piège fonctionne
  1. Un nom de fichier est demandé

    Téléchargement ou extraction.

  2. Le chemin sort du dossier prévu

    La destination n’est pas correctement contrôlée.

  3. Un autre fichier est atteint

    Lecture ou écriture non autorisée.

Ce que vous pouvez faire

Vos premiers réflexes

Si un téléchargement vous livre un fichier qui ne vous est pas destiné, arrêtez-vous et signalez la page. Ne testez pas les noms de fichiers d’autres personnes.

Si vous êtes responsable du service ou de l’organisation

Développeurs : utilisez des références de documents et vérifiez leurs permissions. Pour les chemins nécessaires, contrôlez la destination réelle, y compris les liens symboliques et les archives.

Le détail qui change toutUne idée reçue à corriger

Ajouter un dossier de base devant un chemin fourni par l’utilisateur ne suffit pas à l’enfermer dans ce dossier.

À vous de décider

Un téléchargement censé fournir votre facture renvoie un fichier de configuration. Quelle réaction permet d’alerter sans aggraver l’exposition ?

Choisissez votre réponse et expliquez pourquoi avant de lire la correction.

Voir la réponse expliquée

Arrêtez la consultation et indiquez au responsable la page et l’heure de votre demande. Ne publiez pas le fichier et ne cherchez pas d’autres chemins : le service doit vérifier pourquoi son accès aux fichiers est sorti du périmètre prévu.

Analyser un cas technique

Pour les personnes qui développent, administrent ou analysent les systèmes concernés. Commencez par « Comprendre et agir » si ces notions sont nouvelles pour vous.

Étude de cas fictive

Un téléchargement sort du répertoire autorisé

Une traversée de répertoires permet de demander un fichier en dehors de l’emplacement prévu. Le défaut se trouve souvent dans une fonction de téléchargement qui transforme une valeur d’URL en chemin de fichier. Il peut aussi toucher l’extraction d’archives ou un traitement différé.

Comparer le début de deux chaînes est insuffisant : un répertoire voisin peut commencer par le même nom que le répertoire autorisé. Il faut vérifier l’appartenance réelle du chemin à l’arborescence prévue. Les liens symboliques ajoutent une difficulté, car un chemin apparemment interne peut pointer ailleurs. Un fichier peut également changer entre sa vérification et son ouverture.

Une application qui accepte un identifiant de document plutôt qu’un chemin fourni par le client réduit ce risque. Elle doit encore vérifier que l’utilisateur a le droit de lire le document choisi : être dans le bon répertoire ne suffit pas à autoriser l’accès.

Pour l’enquête, conserver la demande reçue et le chemin effectivement ouvert. Les décodages d’URL et normalisations successives peuvent les rendre différents. Une réponse réussie ne prouve pas à elle seule qu’un fichier sensible a été livré ; l’audit des accès et la taille de la réponse peuvent aider à préciser le résultat.

Le déroulement en schéma

Qui échange avec quiLisez les échanges de haut en bas. Le point marque le départ et la flèche l’arrivée. Les vérifications après correction ne sont pas la suite de l’attaque.

Faites défiler le diagramme pour suivre les échanges ; les noms des acteurs restent en haut. Sur petit écran, faites aussi défiler de gauche à droite.

Étape
DemandeurChemin ou identifiant
ApplicationAutorisation d’objet
Résolveur fichiersCanonicalisation
StockageRacine et liens
  1. Action

    Référence de document ou chemin

    Demandeur vers Application

    Trace r71 / r72

  2. Action

    Conversion en ressource locale

    Application vers Résolveur fichiers

  3. Action

    Résolution réelle des composants

    Résolveur fichiers vers Stockage

    Trace resolved_path

  4. Réponse

    Objet final après liens

    Stockage vers Résolveur fichiers

  5. Action

    Décision de confinement

    Résolveur fichiers vers Application

    Trace inside_root

  6. Action

    Lecture seulement si objet autorisé

    Application vers Stockage

    Trace object_authorized

  7. Refus / blocage

    Refus hors racine ou hors mandat

    Application vers Demandeur

Comment repérer cette attaque

Indices à rechercher

  • Des demandes contiennent des chemins inattendus.
  • Un accès fichier vise un emplacement extérieur au stockage prévu.
  • Une archive déposée crée des fichiers dans un autre répertoire.

Chercher les accès fichiers qui sortent de la racine attendue ou du périmètre documentaire de l’utilisateur, ainsi que les chemins anormaux dans les archives traitées.

Éléments à croiser

Suivre la requête jusqu’au chemin effectivement ouvert. Comparer ce chemin à la racine autorisée après résolution des liens symboliques, et non au seul texte saisi par le client.

Limites de l’interprétation

La présence de ../ dans un accès HTTP prouve une tentative, pas un accès réussi. Sans audit de fichier ou résultat applicatif fiable, le contenu effectivement lu reste inconnu.

Comment réagir

Désactiver l’accès brut au chemin, examiner la portée des droits du service et retrouver les fichiers lus ou modifiables. Pour une exposition de configuration, traiter les secrets comme potentiellement compromis. Pour une écriture, comparer les exécutables, templates et configurations aux références fiables avant remise en service.

Vérifier la correction

Ces contrôles s’adressent à l’équipe responsable du système. Les simulations se préparent dans un environnement de test autorisé ; la lecture du cas ne nécessite aucune manipulation.

  1. Les répertoires voisins et les liens symboliques ne doivent pas donner accès à des fichiers hors périmètre.
  2. Les téléchargements doivent vérifier les droits sur chaque document.
  3. Les archives et traitements différés doivent respecter les mêmes restrictions de chemin.

À vous de raisonner

Le fichier demandé est bien dans le répertoire autorisé. Cela suffit-il à le remettre à n’importe quel utilisateur connecté ?

Formulez votre décision et l’élément qui la justifie avant d’ouvrir la correction.

Comparer avec le raisonnement expliqué

Il faut encore vérifier le droit de cet utilisateur sur le document. Le confinement protège l’arborescence ; l’autorisation protège le périmètre de chaque personne. Vérifiez aussi les liens symboliques et le chemin effectivement ouvert, au-delà d’une comparaison de texte.

Consulter les détails techniques

Pour aller plus loin après l’étude du cas : les extraits servent à s’exercer à la lecture des traces ; le guide de collecte aide les personnes qui disposent des outils et des accès nécessaires.

Lire les extraits commentés — reconstitution fictive

Ces extraits utilisent des valeurs fictives. Certains reprennent des champs documentés ; d’autres regroupent plusieurs sources dans un format pédagogique. Ce ne sont pas des exports bruts à retrouver tels quels dans vos outils. Commencez par les champs expliqués, puis retrouvez-les dans les extraits.

resolved_path
Chemin final explicité par le cas. Le journal d’accès du frontal ne calcule pas ce chemin à l’intérieur du serveur applicatif.

Deux opérations à ne pas confondre

Journal

Audit fictif du stockage et de l’application, avec résolution effectivement observée.

req=r71 actor=u3 document_id=d12 authorized_owner=u3
req=r71 requested_path=a.pdf resolved_path=/srv/documents/a.pdf result=read
req=r72 actor=u3 document_id=none path_source=query
req=r72 requested_path=../config/service.env resolved_path=/srv/config/service.env result=read
job=z4 archive_entry=report/link type=symlink target=/srv/config
job=z4 extraction_result=rejected reason=links_not_allowed
Préparer une collecte dans votre environnement

Choisissez les sources qui correspondent à vos outils et à votre périmètre d’intervention. Cette liste n’est pas un équipement requis pour comprendre la fiche. Vérifiez que les journaux nécessaires étaient activés pendant la période étudiée. Conservez l’export original, son fuseau horaire et sa provenance dans un espace à accès restreint ; travaillez sur une copie expurgée des secrets.

  1. Service concerné — audit et historique à vérifier

    Où les trouver
    Dans l’outil d’administration ou les journaux du service concerné. Demander à son mainteneur où sont enregistrées les décisions d’autorisation et les opérations métier.
    Quoi relever
    Dans le service de fichiers ou de décompression, comparer chemin demandé, chemin canonique après résolution, racine autorisée et décision d’accès. Pour une archive, conserver le nom de l’entrée et le motif de rejet.
    Accès et prérequis
    Il n’existe ni fichier ni vocabulaire universels. Les champs proposés ici doivent être instrumentés s’ils manquent ; ne pas enregistrer mots de passe, jetons ou contenu privé intégral.
    Documentation : Service concerné — audit et historique à vérifier
  2. Linux — auditd

    Où les trouver
    Sur le serveur concerné, dans le fichier log_file d’auditd, généralement /var/log/audit/audit.log. Les enregistrements SYSCALL, EXECVE et PATH d’un même événement partagent le numéro dans msg=audit(...).
    Quoi relever
    Si une règle surveillait le fichier sensible, rapprocher les enregistrements PATH et SYSCALL : nom de l’objet, processus, appel système et résultat. Une création ou un simple contrôle de métadonnées n’est pas une lecture du contenu.
    Accès et prérequis
    Service actif et règles d’audit adaptées avant les faits. Linux n’enregistre pas automatiquement toutes les exécutions et lectures ; les arguments et chemins collectés peuvent être sensibles.
    Documentation : Linux — auditd

Si vous pensez être concerné

Si vous utilisez le service

Si un téléchargement vous livre un fichier qui ne vous est pas destiné, arrêtez-vous et signalez la page. Ne testez pas les noms de fichiers d’autres personnes.

Pour l’équipe qui exploite le service

  1. Désactivez le chemin d’accès vulnérable et conservez les requêtes utiles.
  2. Identifiez les fichiers qui pouvaient être lus ou écrits.
  3. Remplacez les secrets exposés et vérifiez l’intégrité des fichiers modifiables.

Pour qualifier votre situation et être orienté : obtenir une assistance sur 17Cyber. Dans une organisation, prévenez aussi le responsable ou prestataire chargé de la sécurité.

Sources et repères pour approfondir