CVE-2026-65623 in bandit
Tóm tắt
Bởi VulDB • 26/07/2026
Lỗ hổng Độ phức tạp thuật toán không hiệu quả trong mtrudel bandit cho phép tấn công từ chối dịch vụ (DoS) từ xa mà không cần xác thực thông qua việc làm cạn kiệt tài nguyên CPU trong quá trình tái lắp ráp các phân đoạn WebSocket.
Hàm kiểm tra kích thước 'Elixir.Bandit.WebSocket.Connection':oversize_message?/2, được gọi từ handle_frame/3 trong lib/bandit/websocket/connection.ex, sẽ nối từng khung tiếp tục (continuation frame) không phải là khung cuối cùng vào một cấu trúc iolist lồng trái và sau đó đo lại toàn bộ bộ đệm tích lũy bằng IO.iodata_length/1 trên mỗi khung. Vì kích thước bộ đệm tăng lên một phần tử cho mỗi khung và được duyệt qua hoàn toàn mỗi lần, công việc tái lắp ráp có độ phức tạp bậc hai (O(n^2)) theo số lượng các khung tiếp tục.
Giới hạn max_fragmented_message_size (mặc định là 8 MB) chỉ giới hạn tổng số byte chứ không giới hạn số lượng khung, và mỗi khung có thể chứa ít nhất một byte dữ liệu tải trọng; do đó, kẻ tấn công có thể gửi hàng triệu khung tiếp tục nhỏ bé với băng thông khiêm tốn để giữ cho một nhân CPU bận rộn trong vài phút đến vài giờ. Nhiều kết nối đồng thời có thể làm cạn kiệt tài nguyên CPU của toàn bộ máy chủ, từ chối dịch vụ đối với người dùng hợp pháp. Thời gian chờ đọc WebSocket không giúp ích vì đây là thời gian chờ trạng thái nhàn rỗi (idle timeout) được đánh giá giữa các lần đọc và không thể ngắt ngang công việc tái lắp ráp đồng bộ đang diễn ra bên trong một callback duy nhất.
Vấn đề này ảnh hưởng đến bandit: từ phiên bản 1.11.0 trước 1.12.1.
If you want to get best quality of vulnerability data, you may have to visit VulDB.