🇰🇷 한글 설명
RustDesk 클라이언트의 인증 과정에서 낮은 연산 비용의 해시 함수를 사용하고 서버가 생성한 솔트와 챌린지에만 의존하는 취약점입니다. 공격자가 조작된 서버를 통해 사용자의 해시 값을 획득하면 오프라인에서 무차별 대입 공격(Brute Force)을 통해 비밀번호를 복구할 수 있습니다.
💡 쉬운 설명
비밀번호를 암호화하는 방식이 너무 단순하여, 해커가 중간에서 암호화된 정보를 가로채면 컴퓨터를 이용해 원래 비밀번호를 빠르게 알아낼 수 있습니다. 이는 온라인 로그인 시도 횟수를 제한하는 보안 기능으로는 막을 수 없는 문제입니다.
🇺🇸 원문 (English)
Use of Password Hash With Insufficient Computational Effort, Improper Restriction of Excessive Authentication Attempts vulnerability in rustdesk-client RustDesk Client rustdesk-client on Windows, MacOS, Linux, iOS, Android (Client login, peer authentication modules) allows Password Brute Forcing.
The authentication proof is SHA256(SHA256(password + salt) + challenge), where both the salt and the challenge are generated entirely by the server with no client-side nonce, and the hash uses no slow key-derivation function. A rogue or on-path API/relay server (see CVE-2026-30794 / CVE-2026-30797) can issue a chosen salt and challenge, capture the resulting proof, and recover the password offline. The capture-replay claim (CWE-294) is withdrawn: the challenge is regenerated per connection (challenge = Config::get_auto_password(6)), so a captured proof is not replayable against the legitimate server. The 1.4.7 OTP brute-force limiter and the existing LOGIN_FAILURES counter constrain only ONLINE attempts and do not address offline recovery.
This vulnerability is associated with program files src/client.rs and program routines handle_hash(), handle_login_from_ui() (login proof construction).
This issue affects RustDesk Client: through 1.4.8.
📍 영향받는 시스템
RustDesk Client 1.4.8 이하 버전 (Windows, MacOS, Linux, iOS, Android)
⚔️ 공격 벡터
조작된 API/릴레이 서버를 통한 사용자 인증 해시 획득 및 오프라인 무차별 대입 공격
🛡️ 대응 방법
RustDesk 클라이언트를 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.4.8 이하인지 확인하여 취약 여부를 판단합니다.
rustdesk --version 2>/dev/null || echo 'Version not found'