CVE-2026-16028 in Protocol::HTTP2
Сводка
по VulDB • 08.09.2026
В протоколе HTTP2 версии до 1.14 для Perl возможна утечка памяти (memory exhaustion) через закрытые потоки, которые stream_state никогда не удаляет из таблицы потоков соединения.
Когда поток переходит в состояние CLOSED, stream_state освобождает слот конкурентности и очищает большинство ключей потока, однако сама запись остается в таблице потоков соединения, и ничего в дистрибутиве её не удаляет. Идентификаторы потоков монотонно возрастают, поэтому клиент может бесконечно открывать и закрывать потоки в рамках одного соединения; каждое закрытие оставляет остаточную запись, которая сохраняется на протяжении всего времени жизни соединения.
Параметр SETTINGS_MAX_CONCURRENT_STREAMS не ограничивает этот рост. Этот параметр устанавливает предел количества одновременно активных (live) потоков и соблюдается строго, тогда как накопление происходит за счет потоков, которые лимит уже освободил; таким образом память накапливается при том, что уровень конкурентности никогда не превышает единицу. Клиент использует ту же таблицу и растет аналогичным образом в случае взаимодействия с недружелюбным сервером.
При измерении на сервере, построенном на основе этого модуля, примерно 920 байт сохраняются для каждого закрытого потока при передаче по сети около 19 байт; следовательно, 100 000 последовательных потоков в одном соединении увеличивают объем памяти сервера (server resident memory) примерно на 88 МБ. Эти потоки являются обычными запросами, которые приложение принимает и завершает.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.