NitroShare Desktop v0.3.4 contiene una vulnerabilidad de path traversal en su servidor de transferencia de archivos LAN. El servidor escucha en todas las interfaces de red (puerto 40818) sin autenticación. Al recibir archivos, el campo name del encabezado JSON del elemento del remitente se pasa sin verificar que la ruta resuelta permanezca dentro del directorio raíz de transferencia, C:\UserName\Downloads\NitroShare. Un atacante en la misma LAN puede enviar un nombre de archivo manipulado que contenga secuencias ../ (ataque clásico de dot dot slash) para escribir archivos en cualquier lugar al que el usuario actual tenga acceso, incluida la carpeta de Inicio de Windows para la ejecución de código en el próximo inicio de sesión (de ahí el PoC que se creó). No se requiere interacción del usuario. Además, TLS está deshabilitado por defecto (el método de autenticación que ofrece la aplicación), lo que significa que no se requiere autenticación por defecto, algo que supongo que la mayoría de los usuarios hará según años trabajando en TI y Seguridad de la Información.
Pasos para reproducir
Conéctese al servidor de transferencia de NitroShare en el puerto TCP 40818 desde la LAN.
Envíe un paquete de encabezado de transferencia JSON: {"name":"attacker","size":"<n>","count":"1"}.
Envíe un paquete de encabezado de elemento JSON con un nombre de archivo de path traversal:
Envíe paquetes binarios que contengan el contenido del archivo malicioso.
El archivo se escribe fuera del directorio de descargas en la ruta elegida por el atacante.
Si se apunta a la carpeta de Inicio, la carga útil se ejecuta automáticamente en el próximo inicio de sesión del usuario.
Se proporciona un PoC funcional (poc_path_traversal_via_lan_transfer___arbitrary_file_w.py) que ha sido verificado contra NitroShare 0.3.4 en Windows.
Remediación sugerida
Sanitizar los nombres de archivo recibidos — Rechazar o eliminar los separadores de ruta (/, \) y las secuencias ... Después de resolver con QDir::absoluteFilePath(), verifique que el resultado comience con el directorio raíz de transferencia antes de continuar.
Exigir una contraseña o habilitar TLS por defecto — Distribuir con TLS habilitado y generar automáticamente certificados en la primera ejecución, o crear la opción de establecer una contraseña.
Añadir un aviso de aprobación de transferencia — Solicitar al usuario antes de escribir los archivos recibidos en el disco.
Implementar autenticación — Requerir un mecanismo de emparejamiento (secreto compartido, código QR o intercambio de certificados) antes de aceptar transferencias.
Cronología de divulgación
13 de abril de 2026 - Se contactó al desarrollador por correo electrónico publicado en el repositorio de GitHub. Sin respuesta.
19 de abril de 2026 - Segundo intento. Sin respuesta.
3 de mayo de 2026 - Tercer intento. Sin respuesta.