V
Сканер-ВС
ГлавнаяКаталогИсточникиCWECAPECATT&CKМеры защитыПродуктыВендорыДокументация
← Вернуться к списку
MtrudelПриложениеnvd,anchore_overrides

Bandit

Уязвимости
7
Эксплуатируемые
0
Макс. CVSS
8.7
Макс. EPSS
0.00642

Распределение по критичности

Критический
0
Высокий
4
Средний
3
Низкий
0

Затронутые диапазоны версий

0.3.6–1.11.00.5.0–1.11.00.5.9–1.11.01.0.0–1.11.01.4.0–1.11.11.6.1–1.11.1< 1.11.0
Также сопоставлено как (исходные строки): bandit

Топ уязвимостей

CVE-2026-42786Распределение ресурсов без ограничений или дроссельной уязвимости в бандите mtrudel позволяет неаутентифицированный удаленный отказ в обслуживании через истощение памяти. Путь повторной сборки фрагмента в 'Elixir.Bandit.Bandit.WebSocket.Connection':handle_frame/3 в lib/bandit/websocket/connection.ex прилагает каждую входящий Continuation{fin: ложную} полезную нагрузку кадра к иолиста для соединения без кумулятивного ограничения размера. Существующий параметр max_frame_size ограничивает только отдельные кадры; одноранговый, который транслирует безграничное количество фреймов продолжения без настройки fin=1 линейно, линейно повышает кучу BEAM, пока ОС или руководитель не убьют процесс. Поскольку накопление происходит до того, как будет вызван WebSock.handle_in/2, приложение не имеет возможности вставить проверку размера. Phoenix Channels и LiveView оба проезжают через WebSock на Bandit, поэтому приложение Phoenix обнажает эту поверхность, как только оно принимает соединения розеток. Этот вопрос затрагивает бандитов: от 0,50 до 1.11.0.
CVE-2026-39806Петля с уязвимостью Unreachable Exit Condition («Infinite Loop») в бандите mtrudel позволяет неаудовлетворить удаленный отказ в обслуживании через истощение рабочего процесса. 'Elixir.Bandit.Bandit.HTTP1.Socket':do_read_chunked_data!/5 in lib/bandit/http1/scket.ex заканчивается только тогда, когда за линией 0\r\n последнего куска сразу же следует пустая линия \r\n трейлера. RFC 9112 § 7.1.2 допускает нулевые или более прицепных полей между ними. Когда трейлеры присутствуют, ни один из пунктов матча не подходит: всеобъемлющая рука вычисляет отрицательно to_read, вызовы read_available!/2, получают <<>> на тайм-ауте и хвост-реакции с неизменным состоянием. Рабочий процесс прикреплен к жизни TCP-соединения. Горстки одновременных соединений, отправляющих RFC-соответствующие запросы с полями прицепов, достаточны, чтобы исчерпать пул работников Bandit и сделать сервер невосприимчивым ко всему дальнейшему трафику. Никакой аутентификации, специальных заголовков или большой полезной нагрузки не требуется. Прокси, такие как NGINX и HAProxy, законно переносят запросы на прицеп, поэтому серверы, стоящие за такими прокси, могут быть затронуты без какого-либо участия вредоносного клиента. Эта проблема затрагивает бандитов: от 1.6.1 до 1.11.1.
CVE-2026-39803Распределение ресурсов без ограничений или дроходки уязвимости в бандите mtrudel позволяет неаутентифицированный удаленный отказ в обслуживании через истощение памяти. Крупный пункт 'Elixir.Bandit.Bandit.HTTP1.Socket':read_data/2 в lib/bandit/http1/scket.ex игнорирует опцию callr-suppling :length при чтении HTTP/1 толстые тела запроса. Вместо того, чтобы ограничивать накопленный корпус на сконфигурированном пределе (например, Plug.Parsers по умолчанию 8 MB), do_read_chunked_data!/5 буферизует каждый полученный кусок в иолист безоговорочно и материализует все тело как один бинарный. Функция всегда возвращается {:ok, тело, ...}, поэтому абоненты не могут вставать ответ 413. Поскольку Plug.Parsers работает перед маршрутизацией и аутентификацией в стандартной конечной точке Phoenix, неаутентифицированный злоумышленник не нуждается в действительном маршруте или учетных данных. Отправка одного Transfer-Encoding: chunked POST запрос с произвольно большим корпусом на любой путь заставляет процесс BEAM исчерпать доступную память и быть прекращенным убийцей OS OOM. Путь длины контента в той же функции правильно обеспечивает соблюдение лимита и не затрагивается. Этот вопрос затрагивает бандитов: от 1.4.0 до 1.11.1.
CVE-2026-39804Распределение ресурсов без границ или дрогнули уязвимость в бандите mtrudel позволяет неаутентифицированный удаленный отказ в обслуживании через истощение памяти, когда включена сжатие с переносом веб-сокета. 'Elixir.Bandit.Bandit.WebSocket.PerMessageDeflate':inflate/2 in lib/bandit/websocket/permessage_deflate.ex вызывает :zlib.inflate/2 без выходного размера, а затем материализует всю декомпрессированную полезную нагрузку в виде единой двоички через IO.iodata_to_binary/1. Опция websocket_options.max_frame_size ограничивает только размер кадра на проводе (сжатый), а не декомпрессионный выход. Сжатая кадров с высоким коэффициентом (например, равномерные данные в соотношении ~1024:1) может оставаться хорошо при любом пределе размера провода, принущая качения в масштабе GiB в процессе подключения до запуска любого кода приложения. Неаутентифицированный злоумышленник, который может открыть соединение WebSocket, может отправить один такой кадр, чтобы исчерпать память узла BEAM и вызвать убийство OOM. Эта уязвимость требует как серверного уровня bandit websocket_options.compress, так и сжатие per-upgrade: истинный вариант, переданный WebSockAdapter.upgrade/4. Приложения Stock Phoenix и LiveView не затрагиваются, поскольку они по умолчанию сжимают: false. Эта проблема затрагивает бандитов: от 0,59 до 1.11.0.
CVE-2026-42788Распределение ресурсов без ограничений или уязвимости дроссельной заслонки в бандите mtrudel позволяет неаутентичное истощение памяти через негабаритные кадры HTTP/2. 'Elixir.Bandit.HTTP2.Frame':deserialize/2 in lib/bandit/http2/frame.ex проверяет ограничение STTINGS_MAX_FRAME_SIZE только после соответствия шаблона полезной нагрузки::binary-size(длина), который требует, чтобы весь корпус кадра присутствовал в памяти, прежде чем пункт принятия или отклонения может выстрелить. Одноранговый, который объявляет длину кадра до 24-битного максимума (~16 MiB), заставляет сервер буферизовать все тело до оценки размера, независимо от размера, согласованного во время рукопожатия HTTP/2 (по умолчанию 16 KiB на RFC 9113). Неаутентифицированный злоумышленник, держащий множество параллельных соединений, может заставить сервер буферизировать гораздо больше памяти, чем должно позволить согласованный предел размера кадра, что приводит к давлению памяти и потенциальному отказу в обслуживании. Эта проблема затрагивает бандитов: от 0.3.6 до 1.11.0.
CVE-2026-39807Опора на ненадеженные входы в уязвимости решения безопасности в бандите mtrudel позволяет неаудовлетворительно перемещать транспортно-государственные спуфинги на открытых HTTP-соединениях. 'Elixir.Bandit.Pipeline':determine_scheme/2 in lib/bandit/pipeline.ex возвращает клиенту поставляемую клиентом схему URI дословно, игнорируя безопасный транспорт? флаг. HTTP/1.1 абсолютные запрашиваемые цели (например, GET https://victim/path HTTP/1.1) и псевдоголовокеет HTTP/2 :scheme - это стренсы, управляемые атакующим, которые проходят через эту функцию. Через открытое TCP-соединение клиент может заявить, что https и Bandit установит conn.scheme = :https, даже если TLS не был согласован. Потребители, которые ветвь на conn.scheme молча вводятся в заблуждение: уже защищенное отделение Plug.SSL пропускает свой HTTP→HTTPS перенаправление, файлы cookie, издаваемые с безопасным: true отправляются по открытому тексту, журналы аудита записывают запросы как полученные по HTTPS, а CSRF / SameSite gating может принимать неправильные решения. Эта проблема затрагивает бандитов: от 1.0.0 до 1.11.0.
CVE-2026-39805Непоследовательная интерпретация уязвимости HTTP-запросов в бандите mtrudel позволяет осуществлять контрабанду HTTP-запроса через дубликаты заголовков Content-Length. 'Elixir.Bandit.Headers':get_content_length/1 in lib/bandit/headers.ex использует List.keyfind/3, который возвращает только первый подходящий заголовок. Когда запрос содержит два заголовка Content-Length с разными значениями, Bandit молча принимает его, использует первое значение для чтения тела и отправляет оставшиеся байты в качестве второго конвейерного запроса на том же подключении. RFC 9112 §6.3 требует, чтобы получатели относили к этому невосстановимую ошибку кадрирования. Когда Bandit сидит за прокси, который выбирает последнее значение Content-Length и пересылает запрос, а не отклоняет его, неаутентированный злоумышленник может провезти запросы мимо правил WAF, ACL, ограничения ставок и аудита. Этот вопрос затрагивает бандитов: до 1.11.0.
Перейти к вендору →Открыть в каталоге с фильтром по продукту →