Nella libreria ssh, parte del toolkit Erlang/OTP, è stata identificata una vulnerabilità (CVE-2025-32433) che consente l'esecuzione remota di codice su un server SSH creato con la libreria vulnerabile, senza necessità di autenticazione. Il problema è stato classificato con un livello di gravità critico (10 su 10).
Un ricercatore di sicurezza ha già sviluppato un exploit funzionante per l'esecuzione di codice su server SSH vulnerabili. Nota interessante, secondo il ricercatore, il codice è stato creato utilizzando assistenti AI come GPT-4, Cursor e Sonnet, analizzando le modifiche apportate per risolvere la vulnerabilità, comprensivo di un test per verificare la risoluzione del problema.
La libreria del progetto Erlang/OTP fornisce implementazioni pronte all'uso per il client e server SSH e SFTP, che supportano il protocollo SSH 2.0. È possibile distinguere i server SSH problematici dall'output dell'intestazione «SSH-2.0-Erlang/versione». I server SSH basati su Erlang/OTP sono utilizzati in sistemi specializzati, ad esempio su dispositivi IoT e per il calcolo edge, oltre a fungere da strumento di debug: Erlang consente di attivare facilmente un server SSH per il debug remoto delle proprie applicazioni (si presume che questa possibilità di debug possa essere rimasta abilitata in molti progetti scritti in Erlang). Il problema si manifesta anche negli strumenti di Elixir (implementato sopra Erlang) e nel framework Phoenix basato su di esso, ma il server SSH in Phoenix non accetta per impostazione predefinita richieste da reti esterne.
La vulnerabilità è causata da un errore nel codice di analisi dei messaggi, che fa sì che i messaggi SSH_MSG_CHANNEL_REQUEST, che consentono l'esecuzione del comando «exec», vengano elaborati prima del passaggio di autenticazione. Ecco un esempio di codice dall'exploit: command = ‘file:write_file(«/lab.txt», <>).’ return ( b"\x62" # SSH_MSG_CHANNEL_REQUEST + struct.pack(«>I», channel_id) + string_payload(«exec») + b"\x01" # want_reply = true + string_payload(command) )
La vulnerabilità è stata risolta nelle versioni Erlang/OTP-27.3.3, 26.2.5.11 e 25.3.2.20. È possibile seguire la risoluzione della vulnerabilità nelle distribuzioni alle seguenti pagine: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD.
Fonte: opennet.ru
