Петля с уязвимостью Unreachable Exit Condition («Infinite Loop») в бандите mtrudel позволяет неаудовлетворить удаленный отказ в обслуживани…
Петля с уязвимостью 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.
Продукт содержит итерацию или цикл с условием выхода, которое не может быть достигнуто, то есть бесконечный цикл.
https://cwe.mitre.org/data/definitions/835.html →Открыть в коллекции CWE →