
Prueba de concepto y aviso para un path traversal CWE-22 en el gestor de arrastrar y soltar de InputLeap, con pasos de reproducción, script de explotación y guía de remediación.
Producto: InputLeap v3.0.3
Proveedor: input-leap
Vulnerabilidad: Path Traversal
CWE: CWE-22 Limitación Inadecuada de un Nombre de Ruta a un Directorio Restringido ('Path Traversal')
El gestor de arrastrar y soltar de InputLeap intenta sanear los nombres de archivo encontrando el último separador de ruta y conservando solo la parte posterior a este. Cuando no se encuentra ningún separador, la búsqueda de cadenas en C++ devuelve un valor centinela especial llamado npos para indicar un fallo. Sin embargo, el código nunca verifica este centinela antes de usar el resultado en cálculos aritméticos. Dado que npos se define como el mayor entero sin signo posible, restarlo provoca un desbordamiento silencioso y produce una respuesta aparentemente válida que es completamente errónea: en lugar de devolver solo el nombre del archivo, devuelve la cadena original completa sin sanear. Un atacante puede explotar esto creando un mensaje donde una entrada carece de separador mientras que otra contiene uno que no coincide — la heurística global de detección de separadores del código se invierte, la búsqueda falla silenciosamente y ....\AppData...\Startup\evil.exe pasa sin ser tocado. Esa cadena luego se concatena al directorio de destino y se entrega al sistema operativo, que interpreta las secuencias .. y escribe el archivo fuera de la carpeta prevista. La vulnerabilidad existe porque falta una comprobación defensiva para el caso de "no encontrado".
/src/lib/inputleap/DragInformation.cpp
/src/lib/inputleap/DropHelper.cpp
Se ha proporcionado una POC que soporta conexiones TLS y sin cifrado al servidor.
input-leap-directory-traversal-poc.py
Un atacante puede explotar esta vulnerabilidad para subir un archivo a una ruta arbitraria fuera de la carpeta predeterminada o asignada. Esto podría llevar a la ejecución de código