
CVE-2026-39031 — 하드코딩된 RC4 키를 이용한 Lansweeper lsrunase 2.0 / lsencrypt 2.0 오프라인 평문 비밀번호 복구. PoC + 기술 권고.
Lansweeper lsrunase 2.0 및 lsencrypt 2.0은 RC4 기반의 가역적인 비밀번호 암호화 방식을 사용합니다. RC4 키는 암호화된 비밀번호와 함께 평문으로 저장되는 8자리 접두어와 바이너리에 내장된 고정 키 자료로부터 파생됩니다.
두 도구 중 하나로 생성된 암호화된 비밀번호 문자열을 보유한 사람은 누구나 오프라인에서 평문 비밀번호를 복구할 수 있습니다. 복구 과정에는 무차별 대입이 필요하지 않습니다. 암호화된 값에서 평문 접두어를 분리하고, 키 버퍼를 재구성하고, SHA-1 다이제스트 하나를 계산하고, RC4 암호문 하나를 복호화하면 됩니다.
이 문제에는 CVE-2026-39031이 할당되었습니다. 공개 CVE 및 NVD 레코드는 공개 정보가 게시되고 레코드 전파가 완료될 때까지 표시되지 않을 수 있습니다.
| 제품 | 영향받는 버전 |
|---|---|
Lansweeper lsrunase | 2.0 |
Lansweeper lsencrypt | 2.0 |
영향을 받는 구성 요소는 lsrunase.exe 2.0 및 lsencrypt.exe 2.0에서 사용되는 비밀번호 암호화 루틴입니다.
이것은 CVE-2007-6340으로 추적되는 기존의 LSrunasE / Supercrypt 문제가 아닙니다. 해당 이전 CVE는 Geert Moernaut LSrunasE 1.0 및 Supercrypt 1.0에 영향을 미쳤습니다.
CVE-2026-39031은 구체적으로 Lansweeper lsrunase 2.0 및 lsencrypt 2.0을 다룹니다. 취약한 구조가 다릅니다: 이 바이너리들은 평문 8자리 접두어와 바이너리에 내장된 고정 142바이트 접미어로부터 RC4 키를 파생합니다.
암호화된 비밀번호 값은 다음과 같이 구성됩니다:
8-character prefix || base64(RC4(plaintext password))
암호화 과정은 다음과 같습니다:
0x3f부터 0x7e까지 범위의 8자리 ASCII 접두어를 생성합니다.SHA1(key_buffer)를 계산하여 20바이트 RC4 키를 생성합니다.고정 142바이트 접미어는 다음과 같습니다:
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
접두어가 평문으로 저장되고 나머지 키 자료가 모든 설치에 걸쳐 고정되어 있으므로, 암호화된 비밀번호 문자열과 바이너리 사본 또는 이 분석 자료를 가진 공격자는 RC4 키를 파생하는 데 필요한 모든 정보를 확보할 수 있습니다.
개념 증명(PoC) 스크립트는 타사 종속성이 없으며 Python 3에서 실행됩니다.
$ python lsrunase2cve.py --decrypt "IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo="
Decrypted: testpassword12345
위의 암호화된 값은 평문 값 testpassword12345에 대해 LSrunasE 2.0 password encrypter 2.0 GUI로 생성되었습니다.
동일한 접두어를 사용한 재현 가능한 암호화 확인을 위해:
$ python lsrunase2cve.py --encrypt "testpassword12345" --prefix "IssS|CI|"
Encrypted: IssS|CI|NTOEHK5Q9l7Sn89xEA67+wo=
lsrunase 2.0 또는 lsencrypt 2.0으로 생성된 암호화된 비밀번호 값에 로컬 접근 권한이 있는 공격자는 오프라인에서 평문 비밀번호를 복구할 수 있습니다.
도구가 배포되는 방식에 따라 복구된 자격 증명으로 다음이 가능할 수 있습니다:
이 문제는 비밀번호 보호 체계의 여러 암호화 설계 문제로 인해 발생합니다:
관련 약점 분류는 다음과 같습니다:
CWE-321: 하드코딩된 암호화 키 사용CWE-326: 부적절한 암호화 강도CWE-327: 손상되었거나 위험한 암호화 알고리즘 사용| 날짜 | 이벤트 |
|---|---|
| 2026-03-13 | 90일 조정 공개 타임라인과 14일 CVE 할당 신청 기간을 조건으로 [email protected]을 통해 공급업체에 통보했습니다. |
| 2026-03-31 | 공급업체가 제품이 더 이상 유지보수되지 않는다고 응답했습니다. 기술적 확인은 제공되지 않았습니다. |
| 2026-06-08 | MITRE가 CVE-2026-39031을 할당했습니다. |
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