Threatstealth
DevSecOps 2026-05-10 15 min read

Lab Report: CVE-2025-32433 — Erlang/OTP SSH RCE Exploitation Chain and Detection Coverage

Technical lab — reproducing CVE-2025-32433, the unauthenticated Erlang/OTP SSH RCE. Full exploitation chain in a controlled environment, the CVSS 10.0 attack surface, and Sigma + Wazuh detection coverage.

Threatstealth Labs

This lab report documents the controlled reproduction of CVE-2025-32433 in an isolated environment. All testing was conducted on systems owned by Threatstealth Labs with no external connectivity. This report is published for defensive purposes: to enable security teams to understand exploitation mechanics and validate detection coverage.

CVE-2025-32433 affects Erlang/OTP versions before OTP-27.3.3, OTP-26.2.5.11, and OTP-25.3.2.19. Patch immediately. CISA added this CVE to the KEV catalogue on April 16, 2025.

Vulnerability Summary

CVE-2025-32433 is a critical (CVSS 10.0) pre-authentication remote code execution vulnerability in the Erlang/OTP SSH library. The vulnerability exists in the SSH server's message handling code, which incorrectly processes certain SSH protocol messages before authentication completes. An unauthenticated attacker with network access to the SSH port can exploit this to execute arbitrary code with the privileges of the Erlang runtime process.

The impact is particularly severe because Erlang/OTP is used as the runtime for several widely-deployed applications, including RabbitMQ (message broker), CouchDB (NoSQL database), ejabberd (XMPP server), and custom Erlang/Elixir applications. Any of these that expose an SSH management port — which many do for administrative access — are affected.

CVE-2025-32433 Technical Summary
FieldValue
CVE IDCVE-2025-32433
CVSS v3.1 score10.0 (Critical)
CWECWE-306: Missing Authentication for Critical Function
Attack vectorNetwork (unauthenticated)
Affected versionsOTP < 27.3.3, OTP < 26.2.5.11, OTP < 25.3.2.19
Patched versionsOTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.19
CISA KEV added2025-04-16
Public PoC availableYes (multiple on GitHub within 24h of disclosure)

Lab Environment

Lab environment: isolated VLAN with no internet routing. Target: Ubuntu 22.04 LTS with Erlang/OTP 26.1.2 (vulnerable version) and RabbitMQ 3.12.10 with the Management plugin enabled (which uses the Erlang SSH server for the rabbitmq-cli remote shell). Attack host: Kali Linux 2025.1.

Exploitation Chain

Stage 1 — Target identification: The Erlang SSH server banner identifies the OTP version in the SSH_MSG_KEXINIT exchange. A simple Shodan query or nmap banner grab reveals vulnerable versions without authentication.

Stage 2 — Exploit execution: The public PoC sends a crafted SSH_MSG_CHANNEL_REQUEST message before authentication completes. The Erlang SSH library's state machine does not enforce authentication prior to processing certain channel request types, allowing the attacker to inject an OS command into the message payload.

Stage 3 — RCE as the Erlang process owner: The injected command executes with the privileges of the Erlang runtime process — typically the rabbitmq or couchdb service account. On misconfigured installations, this is root.

Detection Coverage

The following detections provide coverage across the exploitation chain. All were validated in the lab environment.

The most reliable detection is the Sigma rule for shell processes spawned by beam.smp. Legitimate Erlang applications do not spawn OS shells during normal operation.

Remediation

← All articles