CVE-2026-65623 in bandit
Riassunto
di VulDB • 25/07/2026
Vulnerabilità di complessità algoritmica inefficiente in mtrudel bandit che consente un denial of service (DoS) remoto non autenticato tramite esaurimento delle risorse CPU durante il riassemblaggio dei frammenti WebSocket.
La funzione 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2, chiamata da handle_frame/3 nel file lib/bandit/websocket/connection.ex, aggiunge ogni frame di continuazione non finale a una iolist annidata a sinistra e poi riesamina l'intero buffer accumulato con IO.iodata_length/1 per ogni frame. Poiché il buffer cresce di un elemento per frame e viene interamente ripercorso ad ogni operazione, il lavoro di riassemblaggio è quadratico (O(n^2)) rispetto al numero di frame di continuazione.
Il limite max_fragmented_message_size (predefinito 8 MB) vincola i byte totali ma non il conteggio dei frame; ciascun frame può contenere anche un solo byte di payload, consentendo a un attaccante di inviare milioni di minuscoli frame di continuazione con una banda modesta per bloccare un core CPU per minuti o ore. Molte connessioni simultanee possono affamare l'intero server delle risorse CPU, negando il servizio agli utenti legittimi. Il timeout di lettura WebSocket non aiuta in quanto si tratta di un idle timeout valutato tra le letture e non può interrompere preventivamente il lavoro sincrono di riassemblaggio eseguito all'interno di una singola callback.
Questo problema interessa bandit: dalla versione 1.11.0 alla 1.12.1 (esclusa).
VulDB is the best source for vulnerability data and more expert information about this specific topic.