Starman для Perl до 0.4019: тела ответов на HEAD-запросы ломают keep-alive (CVE-2026-115823)
В Perl-сервере Starman версий до 0.4019 обнаружена уязвимость: на HEAD-запросы, а также на ответы со статусами 1xx, 204 и 304 сервер отправляет тело ответа, что рассинхронизирует keep-alive и pipelined-соединения. Проблема затрагивает инсталляции, использующие Starman напрямую или за фронтенд-прокси с переиспользованием upstream-соединений. Критичность — высокая из-за риска неверного сопоставления ответов и запросов.
Подробности
Уязвимы версии Starman для Perl до 0.4019 включительно. Согласно описанию, при обработке HEAD-запроса Starman не добавляет chunked-фрейминг, но при этом всё равно записывает тело, возвращённое приложением, — как на пути массива, так и на пути потокового ответа. Аналогичное поведение наблюдается для ответов со статусами 1xx, 204 и 304, которые по спецификации HTTP не должны содержать тело. На keep-alive или pipelined-соединении клиент воспринимает эти лишние байты как начало следующего ответа. Если фронтенд-прокси переиспользует upstream-соединения, он может сопоставить ответы с неверными запросами — классический сценарий десинхронизации HTTP. Числовое значение CVSS в записи CVE не приводится, однако характер проблемы (искажение потока ответов, потенциальная путаница запросов и ответов на уровне прокси) требует оперативного реагирования.Что делать
Основная рекомендация — обновить Starman до версии 0.4019 или более поздней, где поведение исправлено. После обновления стоит перезапустить сервисы, работающие под Starman, и убедиться, что фронтенд-прокси не сохраняет старые upstream-соединения к уязвимым бэкендам. Если немедленное обновление невозможно, в качестве временных митигаций можно рассмотреть отказ от переиспользования upstream-соединений на прокси (например, запрет keep-alive к бэкенду) и минимизацию pipelining. Также полезно проверить логи прокси на предмет аномалий сопоставления ответов. Эти меры снижают риск эксплуатации, но не устраняют корневую причину — некорректную запись тела для HEAD и «безтелесных» статусов. Итог: CVE-2026-115823 — наглядный пример того, как формальное нарушение HTTP-семантики на серверной стороне приводит к десинхронизации соединений и потенциально опасным ошибкам на уровне инфраструктуры. Обновление Starman до 0.4019+ является обязательным шагом для всех, кто использует этот сервер в продакшене.Источник: CVE Project (cvelistV5)
