
CVE-2026-39031 — recuperación offline de contraseñas en texto plano para Lansweeper lsrunase 2.0 / lsencrypt 2.0 mediante una clave RC4 incrustada en el código. PoC + aviso técnico.
Lansweeper lsrunase 2.0 y lsencrypt 2.0 utilizan un esquema de cifrado de contraseñas reversible basado en RC4. La clave RC4 se deriva de un prefijo de 8 caracteres que se almacena en texto claro junto con la contraseña cifrada y material de clave fijo incrustado en los binarios.
Cualquier persona que disponga de una cadena de contraseña cifrada generada por cualquiera de las dos herramientas puede recuperar la contraseña en texto claro sin conexión. El proceso de recuperación no requiere fuerza bruta: separar el prefijo en texto claro del valor cifrado, reconstruir el búfer de clave, calcular un resumen SHA-1 y descifrar un texto cifrado RC4.
A este problema se le asignó CVE-2026-39031. Los registros públicos de CVE y NVD pueden no aparecer hasta que la divulgación se publique y la propagación de los registros se complete.
| Producto | Versión afectada |
|---|---|
Lansweeper lsrunase | 2.0 |
Lansweeper lsencrypt | 2.0 |
El componente afectado es la rutina de cifrado de contraseñas utilizada por lsrunase.exe 2.0 y lsencrypt.exe 2.0.
Este no es el problema anterior de LSrunasE / Supercrypt registrado como CVE-2007-6340. Ese CVE más antiguo afectaba a Geert Moernaut LSrunasE 1.0 y Supercrypt 1.0.
CVE-2026-39031 cubre específicamente Lansweeper lsrunase 2.0 y lsencrypt 2.0. La construcción vulnerable es diferente: estos binarios derivan la clave RC4 a partir de un prefijo de 8 caracteres en texto claro más un sufijo fijo de 142 bytes incrustado en los binarios.
Un valor de contraseña cifrada se construye como:
8-character prefix || base64(RC4(plaintext password))
El proceso de cifrado es:
0x3f a 0x7e.SHA1(key_buffer) para producir la clave RC4 de 20 bytes.El sufijo fijo de 142 bytes es:
0x27 0x0F 0x29 0x11 0x2B 0x13 0x2D 0x15
0x2F 0x17 0x31 0x19 0x33 0x1B 0x35 0x1D
0x37 0x1F 0x39 0x21 0x3B 0x23 0x3D 0x25
0x3F 0x27 0x41 0x29 0x43 0x2B 0x45 0x2D
0x47 0x2F 0x49 0x31 0x4B 0x33 0x4D 0x35
0x4F 0x37 0x51 0x39 0x53 0x3B 0x55 0x3D
0x57 0x3F 0x59 0x41 0x5B 0x43 0x5D 0x45
0x5F 0x47 0x61 0x49 0x63 0x4B 0x65 0x4D
0x67 0x4F 0x69 0x51 0x6B 0x53 0x6D 0x55
0x6F 0x57 0x71 0x59 0x73 0x5B 0x75 0x5D
0x77 0x5F 0x79 0x61 0x7B 0x63 0x7D 0x65
0x7F 0x67 0x81 0x69 0x83 0x6B 0x85 0x6D
0x87 0x6F 0x89 0x71 0x8B 0x73 0x8D 0x75
0x8F 0x77 0x91 0x79 0x93 0x7B 0x95 0x7D
0x97 0x7F 0x99 0x81 0x9B 0x83 0x9D 0x85
0x9F 0x87 0xA1 0x89 0xA3 0x8B 0xA5 0x8D
0xA7 0x8F 0xA9 0x91 0xAB 0x93 0xAD 0x95
0xAF 0x97 0xB1 0x99 0xB3 0x9B
Debido a que el prefijo se almacena en texto claro y el material de clave restante es fijo entre instalaciones, toda la información necesaria para derivar la clave RC4 está disponible para un atacante que tenga una cadena de contraseña cifrada y una copia del binario o de este análisis.
El script de prueba de concepto no tiene dependencias de terceros y se ejecuta con Python 3.
$ python lsrunase2cve.py --decrypt "IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo="
Decrypted: testpassword12345
El valor cifrado anterior fue generado por la interfaz gráfica LSrunasE 2.0 password encrypter 2.0 para el valor en texto claro testpassword12345.
Para una verificación de cifrado reproducible con el mismo prefijo:
$ python lsrunase2cve.py --encrypt "testpassword12345" --prefix "IssS|CI|"
Encrypted: IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo=
Un atacante con acceso local a un valor de contraseña cifrada generado por lsrunase 2.0 o lsencrypt 2.0 puede recuperar la contraseña en texto claro sin conexión.
Dependiendo de cómo se implementen las herramientas, las credenciales recuperadas pueden permitir:
El problema se debe a varios defectos de diseño criptográfico en el esquema de protección de contraseñas:
Las categorías de debilidad relevantes incluyen:
CWE-321: Uso de una clave criptográfica codificadaCWE-326: Fortaleza de cifrado inadecuadaCWE-327: Uso de un algoritmo criptográfico roto o riesgoso| Fecha | Evento |
|---|---|
| 2026-03-13 | Proveedor notificado mediante [email protected] con un plazo de divulgación coordinada de 90 días y una ventana de 14 días para reclamar la asignación del CVE. |
| 2026-03-31 | El proveedor respondió que el producto ya no recibe mantenimiento. No se proporcionó confirmación técnica. |
CWE-321: https://cwe.mitre.org/data/definitions/321.htmlCWE-326: https://cwe.mitre.org/data/definitions/326.htmlCWE-327: https://cwe.mitre.org/data/definitions/327.htmlCVE-2007-6340: https://nvd.nist.gov/vuln/detail/CVE-2007-6340| 2026-06-08 | MITRE asignó CVE-2026-39031. |