
CVE-2025-32433

Critical Pre-Authentication Remote Code Execution Vulnerability
A severe flaw in the Erlang/OTP built-in SSH daemon allows unauthenticated remote attackers to achieve full remote code execution (RCE) by sending crafted SSH connection protocol messages before authentication completes.
CVE-2025-32433 is a critical vulnerability (CVSS 10.0) affecting the SSH server implementation in Erlang/OTP.
Attackers can exploit it by sending SSH messages with numbers ≥ 80 (reserved for post-authentication per RFC 4254) during the pre-authentication phase. The server fails to enforce proper state handling, leading to arbitrary code execution.
Note: Only OTP 25, 26, and 27 receive official security patches. Older releases are end-of-life.
According to the SSH protocol specification, connection protocol messages (message numbers 80+) must only be processed after successful user authentication.
The vulnerable Erlang/OTP SSH server did not properly disconnect or ignore such messages in the unauthenticated state, creating a path to RCE.
Official Patch: Added strict state checks in the message handling logic.
Upgrade to a patched OTP release:
Then rebuild and redeploy your Erlang/Elixir applications.
Official Erlang/OTP Advisory:
https://github.com/erlang/otp/security/advisories/GHSA-37cp-fgq5-7wc2
Key Patch Commits:
:ssh.stop() or remove ssh application)Public Proof-of-Concept exploits were released shortly after disclosure. Exploitation is straightforward and does not require credentials.
The vulnerability has been added to CISA KEV catalog and has been actively exploited in the wild (especially against OT networks and firewalls).
Any system running an Erlang/OTP SSH server (ssh.daemon/1, ssh:daemon/2, etc.) is potentially vulnerable. This includes:
Not affected: Pure SSH client usage or applications that do not start the built-in SSH daemon.
Last Updated: April 2026
Made for the security & Erlang community ❤️
Feel free to star, fork, or contribute improvements!
| OTP Series | Affected Versions | Patched Version |
|---|
| OTP 27 | ≤ 27.3.2 | 27.3.3 |
| OTP 26 | ≤ 26.2.5.10 | 26.2.5.11 |
| OTP 25 | ≤ 25.3.2.19 | 25.3.2.20 |
| Older | All versions from 17.0 to 24.x | Upgrade recommended |