
test
In questo documento viene presentata un'analisi della vulnerabilità CVE-2025-32433, che interessa l'implementazione del server SSH integrato nella piattaforma Erlang/OTP.
Questa vulnerabilità consente l'esecuzione remota di codice arbitrario (Remote Code Execution, RCE) senza necessità di autenticazione e interessa diverse versioni di Erlang/OTP precedenti ai fix:
Erlang/OTP è ampiamente utilizzato come base per sistemi distribuiti scalabili e fa parte dello stack di molti progetti noti (ad esempio, messaggerie, broker di messaggi, servizi web ad alto carico).
La presenza di una vulnerabilità RCE critica nella libreria SSH di base mette a rischio le infrastrutture che utilizzano Erlang/OTP come server o componente con accesso SSH aperto.
Analizzare passo dopo passo la vulnerabilità e dimostrare l'intero ciclo di ricerca:
Raccolta e strutturazione dei materiali:
Trovare e sistematizzare i dati pubblicamente disponibili su CVE-2025-32433, descrivere la sostanza e il possibile impatto.
Identificazione CPE e condizioni di configurazione:
Elencare i CPE e le condizioni di configurazione per cui la vulnerabilità è attuale.
Sviluppo di PoC/Exploit:
Creare e dimostrare un prototipo funzionante di sfruttamento in un ambiente di test.
Metodologie di verifica sicura di massa:
Descrivere tre modi per verificare gli host vulnerabili:
Questa ricerca viene condotta esclusivamente a scopo educativo ed etico ed eseguita solo in un ambiente di test controllato.
L'autore non si assume alcuna responsabilità per qualsiasi uso improprio delle informazioni presentate.
Utilizza queste informazioni solo per apprendere e migliorare la sicurezza dei tuoi sistemi.
Erlang è un linguaggio di programmazione creato per costruire sistemi altamente concorrenti e tolleranti ai guasti.
La sua piattaforma Open Telecom Platform (OTP) è stata utilizzata per molti anni in infrastrutture critiche, dalle telecomunicazioni al settore finanziario.
Negli ambienti OT (tecnologie operative) e nelle reti 5G, Erlang/OTP è apprezzato per la scalabilità e la capacità di garantire un funzionamento continuo dei sistemi con tempi di inattività minimi.
Per l'amministrazione remota, tali reti utilizzano spesso l'implementazione SSH integrata in Erlang/OTP.
È proprio questo che rende la vulnerabilità CVE-2025-32433 particolarmente pericolosa per tali ambienti.
L'interazione sicura in Erlang/OTP è garantita dalla propria implementazione SSH, che:
La vulnerabilità in questa implementazione consente a un attaccante con accesso di rete di eseguire codice arbitrario senza autenticazione, creando una minaccia diretta per gli asset vulnerabili.
Secondo i dati di scansione globale di Internet (Cortex Xpanse, aprile 2025), i servizi SSH Erlang/OTP vulnerabili sono ampiamente disponibili su Internet e non operano solo sulle porte standard, ma anche, ad esempio, sulla porta TCP 2222.
Questa porta è spesso utilizzata da componenti obsoleti di automazione industriale e dal protocollo di trasmissione implicita di messaggi Ethernet/IP, ampliando così il possibile vettore d'attacco.
La vulnerabilità è legata alle versioni SSH incluse nei rilasci di Erlang/OTP.
La diffusione di servizi vulnerabili su porte caratteristiche di vari settori crea una superficie d'attacco globale significativa.
La telemetria ha mostrato che oltre 85% dei tentativi di sfruttamento sono stati registrati sui firewall del segmento OT nei seguenti ambiti:
Allo stesso tempo, nonostante l'elevata dipendenza da OT, nei settori:
non sono stati individuati fattori che favorissero la diffusione attiva di questa specifica minaccia.
CVE-2025-32433 è registrata nel database NVD con i seguenti CPE tipici (Common Platform Enumeration):
cpe:2.3:a:erlang:otp:25:*:*:*:*:*:*:*cpe:2.3:a:erlang:otp:26:*:*:*:*:*:*:*cpe:2.3:a:erlang:otp:27:*:*:*:*:*:*:*Sono considerate vulnerabili le versioni minori successive alle seguenti versioni patch:
- 25.x – fino a 25.3.2.20 inclusa
- 26.x – fino a 26.2.5.11 inclusa
- 27.x – fino a 27.3.3 inclusa
ssh:daemon/2), non un demone openssh esterno.22 o personalizzata, ad esempio 2222) deve essere accessibile per connessioni remote dalla rete dell'attaccante.ssh:daemon/2.⚠️ Se Erlang/OTP viene utilizzato solo come libreria client senza che sia attivo un server SSH, o se il server è chiuso in una rete isolata, la vulnerabilità non è sfruttabile.
La vulnerabilità è causata dal fatto che il server SSH integrato in Erlang/OTP gestisce in modo errato il processo di pre-autenticazione.
Un ruolo chiave è giocato da due tipi di messaggi del protocollo di connessione – SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST.
Secondo lo standard RFC 4254, tali messaggi dovrebbero essere accettati solo dopo un'autenticazione riuscita dell'utente.
Qualsiasi tentativo di inviarli prima dovrebbe portare immediatamente alla chiusura della connessione.
Nel caso di CVE-2025-32433, il demone SSH non fa rispettare questa regola, consentendo a un attaccante di aprire un canale di sessione e inviare una richiesta exec con un comando arbitrario senza fornire credenziali valide.
In altre parole, ciò porta a un'esecuzione remota di codice non autenticata (RCE) – l'attaccante può prendere il controllo del server senza conoscere né nome utente, né password, né chiave.

Il protocollo SSH Connection opera sopra i livelli di trasporto e autenticazione di SSH.
Fornisce funzioni di login interattivo, esecuzione remota di comandi e inoltro di porte.
Nell'implementazione SSH vulnerabile in Erlang/OTP, proprio questi due messaggi – SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST, necessari per avviare un canale e richiedere comandi – diventano il punto d'attacco:
l'attaccante può inviare traffico appositamente formato che inganna il sistema facendogli eseguire codice arbitrario prima del completamento dell'autenticazione.

Nell'ambito della ricerca è stato preparato un Proof-of-Concept funzionante per CVE-2025-32433.
CVE-2025-32433.py – Script Python che costruisce manualmente i pacchetti SSH
(SSH_MSG_KEXINIT, SSH_MSG_CHANNEL_OPEN, SSH_MSG_CHANNEL_REQUEST) e
li invia prima del completamento dell'autenticazione.
Ciò consente, nelle versioni vulnerabili di Erlang/OTP, di eseguire un comando arbitrario
sul lato server – nel PoC crea il file /lab.txt con il testo cyberok.
ssh_server.erl – Modulo Erlang minimale che avvia il demone SSH
integrato OTP sulla porta 2222. Serve solo a scopo dimostrativo
e viene eseguito all'interno di un contenitore Docker.
Dockerfile – Ricetta per la creazione del contenitore, in cui viene automaticamente
compilata la versione specificata di Erlang/OTP e avviato il server SSH di test.
⚠️ Questo PoC è destinato esclusivamente a test locali e scopi educativi. Non utilizzarlo in reti produttive o pubbliche.
Costruisci l'immagine:
git clone https://github.com/iteride/CVE-2025-32433.git && cd CVE-2025-32433/POC/ && docker build -t cve-ssh .

Avvia l'immagine
docker run -d --name cve-ssh -p 2222:2222 cve-ssh
Dimostrazione del PoC

Il modello passivo cerca indizi indiretti della vulnerabilità, senza eseguire azioni offensive reali.
Analizza solo le informazioni "superficiali" che il servizio espone:
Se viene rilevata una versione vulnerabile (ad esempio OTP 25.3.2.19 o 26.2.5.10), nuclei segnala l'host come potenzialmente vulnerabile.
⚠️ Questo approccio è sicuro: non vengono inviati pacchetti dannosi o tentativi di sfruttamento.
nuclei -u 127.0.0.1:2222 -t erlang-passive.yaml
Il modello attivo esegue una simulazione controllata dell'attacco:
invia pacchetti SSH appositamente formati prima dell'autenticazione e verifica se la vulnerabilità si attiva.
Per rilevare lo sfruttamento viene utilizzato Interactsh – se il server remoto ha eseguito la richiesta malevola, nel pannello Interactsh apparirà un DNS-callback.
✅ Questo test conferma la reale possibilità di esecuzione remota di codice (RCE),
ma viene condotto solo in un ambiente di test isolato.
nuclei -u 127.0.0.1:2222 -t erlang-active.yaml -code
Differenze rispetto al modello nuclei:
Esecuzione dello script
⚠️ Prima di eseguire, assicurati che interactsh-client sia installato e in esecuzione.
python3 babyfon.py -f targets.txt -d your.interactsh_domain

Dopo l'esecuzione, controlla le interazioni DNS in interactsh-client. (Nell'esempio vengono scansionati due target: uno vulnerabile, l'altro già patchato)



Conclusioni dai test: