CVE-2026-65623 in bandit
Zusammenfassung
von VulDB • 24.07.2026
Ein Fehler mit ineffizienter algorithmischer Komplexität in mtrudel Bandit ermöglicht einen nicht authentifizierten Remote-Denial-of-Service (DoS) durch CPU-Erschöpfung während der Reassembly von WebSocket-Fragmenten.
Die Größenbegrenzung 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2, die aus handle_frame/3 in lib/bandit/websocket/connection.ex aufgerufen wird, hängt jeden nicht-finalen Fortsetzungsframe an eine links-nestete iolist und misst dann den gesamten angesammelten Puffer mit IO.iodata_length/1 bei jedem Frame neu. Da der Puffer pro Frame um ein Element wächst und jedes Mal vollständig durchlaufen wird, ist die Reassembly-Arbeit quadratisch (O(n^2)) in Bezug auf die Anzahl der Fortsetzungsframes.
Das Limit max_fragmented_message_size (Standard 8 MB) begrenzt zwar die Gesamtzahl der Bytes, nicht jedoch die Frame-Anzahl; jeder Frame kann so wenig wie ein einzelnes Payload-Byte enthalten. Ein Angreifer kann daher Millionen winziger Fortsetzungsframes mit moderater Bandbreite senden, um einen CPU-Kern für Minuten bis Stunden zu blockieren. Viele gleichzeitige Verbindungen können den gesamten Server von der CPU-Ressource ausschließen und legitimen Nutzern den Dienst verweigern. Der WebSocket-Lese-Timeout hilft nicht weiter, da es sich um einen Idle-Timeout handelt, der zwischen Lesevorgängen ausgewertet wird und die synchrone Reassembly-Arbeit innerhalb eines einzelnen Callbacks nicht vorzeitig abbrechen kann.
Dieses Problem betrifft bandit: von Version 1.11.0 bis vor 1.12.1.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.