
Preuve de concept et avis pour une traversée de chemin CWE-22 dans le gestionnaire de glisser-déposer d'InputLeap, avec étapes de reproduction, script d'exploitation et conseils de remédiation.
Produit : InputLeap v3.0.3
Fournisseur : input-leap
Vulnérabilité : Path Traversal
CWE : CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Le gestionnaire de glisser-déposer d'InputLeap tente d'assainir les noms de fichiers en recherchant le dernier séparateur de chemin et en ne conservant que la partie qui le suit. Lorsqu'aucun séparateur n'est trouvé, la recherche de chaîne C++ renvoie une valeur sentinelle spéciale appelée npos pour indiquer un échec. Cependant, le code ne vérifie jamais cette sentinelle avant d'utiliser le résultat dans des calculs arithmétiques. Comme npos est défini comme le plus grand entier non signé possible, sa soustraction provoque un débordement silencieux et produit une réponse d'apparence valide mais complètement erronée : au lieu de renvoyer uniquement le nom du fichier, elle renvoie la chaîne originale entière non assainie. Un attaquant peut exploiter cela en fabriquant un message où une entrée est dépourvue de séparateur tandis qu'une autre en contient un qui ne correspond pas — l'heuristique globale de détection de séparateur du code s'inverse, la recherche échoue silencieusement, et ....\AppData...\Startup\evil.exe passe sans être modifié. Cette chaîne est ensuite concaténée au répertoire de dépôt et transmise au système d'exploitation, qui interprète les séquences .. et écrit le fichier en dehors du dossier prévu. La vulnérabilité existe parce qu'une vérification défensive du cas « non trouvé » est absente.
/src/lib/inputleap/DragInformation.cpp
/src/lib/inputleap/DropHelper.cpp
Un POC a été fourni qui prend en charge TLS et les connexions sans chiffrement au serveur.
input-leap-directory-traversal-poc.py
Un attaquant peut exploiter cette vulnérabilité pour téléverser un fichier vers un chemin arbitraire en dehors du dossier par défaut ou assigné. Cela pourrait mener à une exécution de code