
Proof-of-concept exploit per CVE-2025-51495, un overflow di interi nella funzione mg_ws_cb di Mongoose WebSocket che porta ad accesso alla memoria fuori dai limiti e potenziale esecuzione di codice remoto.
Vorrei segnalare una vulnerabilità di sicurezza identificata nell'ultima release di Mongoose (v7.17). Il problema risiede nel modulo WebSocket, in particolare nella funzione mg_ws_cb responsabile della gestione dei frame WebSocket in ingresso.
La funzione è vulnerabile a un integer overflow, che può portare a un accesso alla memoria fuori dai limiti in presenza di determinati input costruiti ad hoc. Questa condizione potrebbe potenzialmente essere sfruttata da un attaccante remoto per causare corruzione della memoria o il crash dell'applicazione.
A causa del fatto che diversi vendor implementano la logica di business di WebSocket in modi differenti, questa vulnerabilità potrebbe potenzialmente portare all'esecuzione di codice remoto.
Dettagli:
La vulnerabilità principale risiede nella funzione mg_ws_cb:
Un pacchetto WebSocket appositamente costruito inviato dal client può impostare ofs=0 in questo punto, il che causerà un integer overflow nel calcolo di ofs-1, risultando in un valore molto più grande della lunghezza di recv.buf.
Nelle successive funzioni di elaborazione WebSocket, questo buf può essere utilizzato e, poiché la sua lunghezza è maggiore della lunghezza effettiva, può portare ad accessi fuori dai limiti o a crash del programma.
Attivazione della vulnerabilità :
Per scopi dimostrativi, ho scelto l'esempio websocket esistente denominato "websocket-server" nel progetto. Non ho apportato alcuna modifica al codice, se non l'aggiunta dei controlli ASAN durante la compilazione.
Quando si esegue il programma e si invia uno specifico pacchetto websocket, questo provoca direttamente un crash.
poc:
Ho anche scelto il "websocket-client" esistente nel progetto come client, e ho apportato modifiche solo ai due parametri nella funzione fn di main.c per l'invio della richiesta.
L'esecuzione del programma modificato causerà il crash del server.