
Proof-of-Concept und Advisory für einen CWE-22-Pfad-Traversal im Drag-and-Drop-Handler von InputLeap, mit Reproduktionsschritten, Exploit-Skript und Hinweisen zur Behebung.
Produkt: InputLeap v3.0.3
Anbieter: input-leap
Schwachstelle: Path Traversal
CWE: CWE-22 Unsachgemäße Einschränkung eines Pfadnamens auf ein eingeschränktes Verzeichnis ('Path Traversal')
Der Drag-and-Drop-Handler von InputLeap versucht, Dateinamen zu bereinigen, indem er das letzte Pfadtrennzeichen sucht und nur den Teil danach behält. Wenn kein Trennzeichen gefunden wird, gibt die C++-String-Suche einen speziellen Sentinel-Wert namens npos zurück, um einen Fehler anzuzeigen. Der Code prüft jedoch nie auf diesen Sentinel, bevor er das Ergebnis in arithmetischen Berechnungen verwendet. Da npos als die größtmögliche vorzeichenlose Ganzzahl definiert ist, führt die Subtraktion zu einem stillen Überlauf und erzeugt ein gültig aussehendes Ergebnis, das völlig falsch ist: Statt nur den Dateinamen zurückzugeben, wird die gesamte unbereinigte Originalzeichenkette zurückgegeben. Ein Angreifer kann dies ausnutzen, indem er eine Nachricht erstellt, bei der ein Eintrag kein Trennzeichen enthält, während ein anderer ein nicht übereinstimmendes enthält — die globale Trennzeichen-Erkennungsheuristik des Codes kippt um, die Suche schlägt still fehl, und ....\AppData...\Startup\evil.exe passiert unberührt. Diese Zeichenkette wird dann an das Drop-Verzeichnis angehängt und an das Betriebssystem übergeben, das die ..-Sequenzen interpretiert und die Datei außerhalb des vorgesehenen Ordners schreibt. Die Schwachstelle existiert, weil eine defensive Prüfung für den Fall „nicht gefunden" fehlt.
/src/lib/inputleap/DragInformation.cpp
/src/lib/inputleap/DropHelper.cpp
Ein POC wurde bereitgestellt, der TLS- und Nicht-Krypto-Verbindungen zum Server unterstützt.
Ein Angreifer kann diese Schwachstelle ausnutzen, um eine Datei an einen beliebigen Pfad außerhalb des Standard- oder zugewiesenen Ordners hochzuladen. Dies könnte zur Codeausführung führen