CVE-2026-30789: RustDesk Auth Proof Uses Server-Controlled Salt/Challenge and Fast Double-SHA256, Enabling Offline Brute-Force
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::getautopassword(6)), so a captured proof is not replayable against the legitimate server. The 1.4.7 OTP brute-force limiter and the existing LOGINFAILURES counter constrain only ONLINE attempts and do not address offline recovery.
This vulnerability is associated with program files src/client.rs and program routines handlehash(), handleloginfromui() (login proof construction).
This issue affects RustDesk Client: through 1.4.8.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Add a client-side nonce to the authentication proof: the client MUST generate a cryptographically-random nonce and include it in the proof computation and message to the server so the server cannot fully control salt/challenge used for proof construction.
RustDesk client authentication proof client_nonce = present - Configuration
Replace the current double-SHA256 proof construction (SHA256(SHA256(password + salt) + challenge)) with a slow key-derivation function such as Argon2id applied to the password+salt before incorporating the challenge to make offline brute-force impractical.
RustDesk client authentication KDF KDF = Argon2id - Configuration
Transition authentication to SRP (Secure Remote Password) to provide a zero-knowledge proof mechanism and avoid server-controlled salt/challenge and fast hash-based offline attacks.
RustDesk authentication protocol protocol = SRP
Event History
Frequently Asked Questions
What is the severity of CVE-2026-30789?
CVE-2026-30789 is classified as a high severity vulnerability due to its potential for authentication bypass through replay attacks.
How do I fix CVE-2026-30789?
To fix CVE-2026-30789, update the RustDesk Client to the latest version that addresses the authentication proof nonce issue.
What platforms are affected by CVE-2026-30789?
CVE-2026-30789 affects the RustDesk Client on Windows, MacOS, Linux, iOS, and Android.
Can CVE-2026-30789 be exploited remotely?
Yes, CVE-2026-30789 can be exploited remotely, allowing attackers to perform replay attacks on vulnerable installations.
Is there a workaround available for CVE-2026-30789?
Currently, there are no known effective workarounds for CVE-2026-30789; updating the client is the recommended solution.