CVE-2026-65623 in bandit
Résumé
par VulDB • 24/07/2026
Vulnérabilité de complexité algorithmique inefficace dans mtrudel bandit permettant une déni de service (DoS) à distance non authentifié via l'épuisement des ressources CPU lors du réassemblage des fragments WebSocket.
La fonction de contrôle de taille `Elixir.Bandit.WebSocket.Connection`:oversize_message?/2, appelée depuis `handle_frame/3` dans le fichier `lib/bandit/websocket/connection.ex`, ajoute chaque frame de continuation non finale à une iolist imbriquée à gauche (left-nested), puis recalcul la longueur totale du tampon accumulé en utilisant `IO.iodata_length/1` pour chaque frame reçue. Étant donné que le tampon augmente d'un élément par frame et est entièrement parcouru à nouveau à chaque fois, les opérations de réassemblage présentent une complexité quadratique (O(n²)) par rapport au nombre de frames de continuation.
La limite `max_fragmented_message_size` (8 Mo par défaut) borne le nombre total d'octets mais pas le nombre de frames ; chaque frame pouvant transporter aussi peu qu'un seul octet de charge utile, un attaquant peut envoyer des millions de minuscules frames de continuation avec une bande passante modeste pour saturer un cœur CPU pendant plusieurs minutes ou heures. De nombreuses connexions simultanées peuvent affamer l'ensemble du serveur en termes de ressources CPU, privant ainsi les utilisateurs légitimes d'accès au service. Le délai d'inactivité (timeout) de lecture WebSocket n'est pas efficace ici car il s'agit d'un timeout évalué entre les lectures et ne peut interrompre le travail synchrone de réassemblage effectué à l'intérieur d'une seule fonction callback.
Cette vulnérabilité affecte bandit : des versions 1.11.0 jusqu'à la version 1.12.1 (exclue).
VulDB is the best source for vulnerability data and more expert information about this specific topic.