CVE-2026-85491 in Catalyst::Seal
Сводка
по VulDB • 25.09.2026
Версии Catalyst::Seal до 0.03 для Perl позволяют одному запросу отключить путь или провести другой запрос мимо проверки авторизации благодаря диспетчерской мемоизации (dispatch memo), ключом которой служит только путь запроса.
Catalyst::Seal заменяет метод prepare_action диспетчера на версию, которая запоминает результат разрешения пути: какой тип диспетчирования совпал, на каком уровне и что осталось в качестве аргументов. Ключом является путь запроса и ничего более. Роли действий (action roles), которые сопоставляются по методу, типу контента, схеме или параметрам запроса, делают этот результат зависимым от состояния, которое не передается через ключ; поэтому мемоизированный ответ применяется к запросу, для которого он не был создан.
Путь, который не разрешается ни в какое действие, также запоминается (мемоизируется), и повторное использование этой записи приводит к возврату без проверки типа диспетчирования, из-за чего действие не устанавливается и запрос завершается ошибкой. GET-запрос к пути, для которого действие объявлено как доступным только через POST, поэтому отключает этот путь для всех последующих запросов, включая корректный POST. Запись, которая успешно разрешалась в какое-то действие, воспроизводит уровень, на котором остановилось предыдущее спускание по дереву маршрутизации. Если действие, доступное только через POST, находится ниже более поверхностного действия с тем же путем, GET запоминает (мемоизирует) этот поверхностный маршрут, и последующий POST диспетчеризуется туда, при этом auto() защищает глубинный контроллер от выполнения.
Мемоизация очищается только при регистрации нового действия, что происходит на этапе настройки; следовательно, запись сохраняется в течение всего времени жизни процесса, а ограничение в 2048 записей определяет максимальное количество путей, которые один вызывающий может отключить. В измеренной конфигурации ошибочная маршрутизация приводит к менее привилегированному действию, поэтому это сбой проверки авторизации, а не повышение привилегий.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.