Get a Demo
Under Attack?
A white warning icon with an exclamation mark is centered on a bright pink, patterned background. Below it, text reads: CVE-2025-32433: Critical Erlang/OTP SSH Vulnerability (CVSS 10).

CVE-2025-32433: Critical Erlang/OTP SSH Vulnerability (CVSS 10)

<br />
<b>Warning</b>:  Undefined variable $photo in <b>/nas/content/live/landing173/wp-content/themes/bricks/includes/elements/code.php(236) : eval()'d code</b> on line <b>24</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on value of type null in <b>/nas/content/live/landing173/wp-content/themes/bricks/includes/elements/code.php(236) : eval()'d code</b> on line <b>24</b><br />
Eliad Mualem April 17, 2025

On April 16, 2025, a critical remote code execution (RCE) vulnerability in Erlang’s SSH library was publicly disclosed. Tracked as CVE-2025-32433, this vulnerability received the maximum possible CVSS score of 10.0, signaling how severe and exploitable it is, especially in environments relying on Erlang/OTP for SSH access.

Overview

  • What: RCE via unauthenticated SSH messages in Erlang/OTP.
  • Impact: Full code execution, potentially as root, over the network.
  • Affected: Any system running an Erlang/OTP-based SSH server.
  • Fix: Upgrade to OTP-27.3.3, OTP-26.2.5.11, or OTP-25.3.2.20.
  • Workaround: Restrict SSH access using firewall rules.

What is CVE-2025-32433?

Discovered by researchers at Ruhr University Bochum, the vulnerability is rooted in improper handling of SSH connection protocol messages in Erlang/OTP. Specifically, it allows attackers to send crafted messages before authentication is completed, leading to unauthenticated arbitrary code execution.

If the Erlang SSH daemon is running as root (a common configuration), successful exploitation can grant full system control, making it a prime candidate for ransomware, lateral movement, or data exfiltration.

Technical Overview

According to the RFC, SSH message numbers ≥ 80 are reserved for post-authentication protocols. If a client sends such a message before authentication, the server must disconnect immediately.

But in the vulnerable versions of Erlang/OTP, the SSH server did not enforce this rule, allowing attackers to inject crafted messages during the unauthenticated phase — leading to unauthorized code execution.

The patch introduces a new check in the handle_msg function for unauthenticated users.

handle_msg(Msg, Connection, server, Ssh = #ssh{authenticated = false}) ->
     %% See RFC4252 6.
     %% Message numbers of 80 and higher are reserved for protocols running
     %% after this authentication protocol, so receiving one of them before
     %% authentication is complete is an error, to which the server MUST
     %% respond by disconnecting, preferably with a proper disconnect message
     %% sent to ease troubleshooting.
     MsgFun = fun(M) ->
                      MaxLogItemLen = ?GET_OPT(max_log_item_len, Ssh#ssh.opts),
                      io_lib:format("Connection terminated. Unexpected message for unauthenticated user."
                                    " Message:  ~w", [M],
                                    [{chars_limit, MaxLogItemLen}])
              end,
     ?LOG_DEBUG(MsgFun, [Msg]),
     {disconnect, {?SSH_DISCONNECT_PROTOCOL_ERROR, "Connection refused"}, handle_stop(Connection)};

Impact

This CVE has several factors that make it a significant risk to organizations:

  • No credentials required: Attackers only need network access to the SSH server.
  • Common in critical systems: Erlang is widely used in high-availability environments, including telecom infrastructure (e.g., Cisco, Ericsson) and IoT/OT systems.
  • Silent takeover: Exploitation can happen without any user interaction, leaving minimal traces initially.

Any system using the Erlang/OTP SSH server component is potentially exposed. This includes:

  • Distributed systems built on Erlang.
  • Devices in telecom, IoT, and edge computing.
  • Custom services using Erlang/OTP’s SSH library for remote management.

Suggested Remediation

Apply the Patch

Upgrade your Erlang/OTP installation to one of the following patched versions:

  • OTP-27.3.3
  • OTP-26.2.5.11
  • OTP-25.3.2.20

If you’re using a vendor-supplied Erlang distribution (e.g., part of a Cisco or Ericsson product), monitor for official updates.

Apply Workarounds (If Patch Not Possible)

  • Restrict access to the SSH port (typically TCP/22) to trusted IPs only.
  • Use firewall rules to block access from untrusted networks.
  • Disable Erlang/OTP-based SSH if it’s not essential.

How Upwind Protects You From CVE-2025-32433

Upwind provides powerful tools to address and mitigate the risks associated with Erland/OTP SSH vulnerabilities.

  1. Find Vulnerable Packages: Upwind identifies and monitors the use of Erlang and OTP-27.3.3, OTP-26.2.5.11 and OTP-25.3.2.20 in your environment. Using Upwind’s SBOM explorer, you can easily find affected packages and view which resources are using them.
  2. Prioritize Risks: Understand the impact of these vulnerabilities in high-risk environments and prioritize upgrades or mitigations.
  3. Real-Time Detection: Upwind monitors runtime activity to catch exploitation attempts, like unauthenticated SSH traffic or abnormal code execution.
  4. Immediate Customer Support: Upwind proactively contacts affected customers with clear guidance on mitigation.

Learn More

To learn more about how Upwind can help you rapidly locate packages affected by CVE-2025-32433 or identify potential remote code execution attacks, schedule a demo.

Contents

Further Reading

API-ASM Blog

Validate the Real-World Exposure of Your APIs with Upwind Attack Surface Management

Your APIs are probably the least-monitored component of your attack surface. They multiply faster than any team can document, and most scanners only ever pick up the ones you already know about. But that gap just got smaller. Upwind’s Attack Surface Management capabilities now provide a unified view of cloud and API exposure, helping security…
gemini-svg

Metabase Instances Actively Exploited: Unauthenticated Admin Takeover via BI Layer Reset Password SQL Injection (CVE-2026-72898)

Executive Summary Upwind recently observed multiple Advanced Persistent Threat (APT) groups actively exploiting CVE-2026-72898. This vulnerability - an unauthenticated SQL injection in the Metabase password reset endpoint carrying a critical CVSS score of 10.0, was actively exploited as a zero-day before a patch became available. An unauthenticated remote attacker can craft a malicious SQL injection…
Buyers Demos

Why Buyers Remember Solving a Demo, Not Watching One

Key Takeaways I recently sat down with Upwind Solutions Architect, Evan Grace to learn more about his process. After some intros, he told me about his new hobby, hydroponics. For those who don’t know, hydroponics is a method of growing plants without soil. This was unbelievable to me but after Evan explained his deep dive…
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Threat RSS
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Main RSS