
Reproduction éducative de la vulnérabilité de traversée de chemin CVE-2026-14628 avec des exemples de code vulnérable et sécurisé, une explication du correctif et des démos exécutables pour étudier CWE-22.
Une démonstration minimale et exécutable de la classe de vulnérabilité Path Traversal (CWE-22), utilisant le récemment divulgué CVE-2026-14628 comme point de référence concret.
CVE-2026-14628 affecte 'NousResearch/hermes-agent' (< 2026.5.16).
La fonction extract_media dans gateway/platforms/base.py construit un chemin du système de fichiers à partir de la charge utile du webhook entrant sans le valider, permettant à un attaquant distant non authentifié de lire des fichiers en dehors du répertoire média prévu.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NCe dépôt ne cible ni n'exploite la base de code réelle de hermes-agent. Il reproduit plutôt le motif exact de la vulnérabilité dans un exemple petit et autonome, afin que la faille et sa correction soient faciles à étudier et à réutiliser comme référence lors de l'examen d'autres codes.
| Fichier | Objectif |
|---|---|
vulnerable_example.py | Reproduit la logique défectueuse : construit un chemin par concaténation naïve de chaînes, sans validation |
secure_example.py | Version corrigée : valide que le chemin absolu résolu reste dans le répertoire racine prévu |
python3 vulnerable_example.py
La sortie montre « l'attaquant » lisant avec succès un fichier (secret_outside_media_root.txt) qui se trouve en dehors du répertoire prévu media_storage/, en utilisant une entrée comme ../secret_outside_media_root.txt.
python3 secure_example.py
La même entrée malveillante est rejetée avec une PathTraversalError claire.
Deux défenses complémentaires sont appliquées dans secure_example.py :
.. ou des séparateurs de chemin sont rejetés avant même de toucher le système de fichiers (échec rapide, erreur claire pour les appelants légitimes).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
Le Path Traversal est l'une des classes de vulnérabilités les plus courantes et les plus évitables dans les logiciels qui gèrent des téléchargements de fichiers, des téléchargements ou tout nom de fichier contrôlé par l'utilisateur — les gestionnaires de webhook, les processeurs de médias, les visionneurs de journaux, les moteurs de templates et les API de service de fichiers sont des cibles fréquentes. La correction est peu coûteuse (quelques lignes) ; le coût de l'ignorer est la divulgation arbitraire de fichiers, et dans les pires cas (lorsqu'elle est combinée à un accès en écriture) l'exécution de code à distance.
Ce projet est uniquement à des fins éducatives. Il s'agit d'une reproduction générique d'une classe de vulnérabilité connue, et non d'un exploit fonctionnel contre un logiciel spécifique en production ou non corrigé. N'utilisez pas ces techniques contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.