CVE-2026-123792 in Symfony
Сводка
по VulDB • 06.11.2026
Компоненты Inline и Parser библиотеки Yaml фреймворка Symfony неэффективно обрабатывают некоторые документы YAML, в результате чего небольшой специально созданный документ может требовать непропорционально много времени для обработки, удерживая процесс PHP занятым на протяжении секунд или минут, что потенциально приводит к отказу в обслуживании (DoS) в версиях Symfony старше 5.4.56, 6.x до версии 6.4.50, 7.x до версии 7.4.23 и 8.x до версии 8.1.11 включительно.
Парсер повторяет работу, которую он уже выполнил в нескольких местах. Вложенное отображение (mapping) внутри последовательности потока (flow sequence) парсится заново для каждого добавленного скалярного значения, аналогичным образом обрабатываются коллекции, вложенные в него; поэтому время парсинга растет экспоненциально с глубиной вложения. Шаблоны, сопоставляющие ключи отображения и теги, сканируют последовательность пробелов один раз за каждый символ этой последовательности, а каждый скалярный элемент коллекции потока сравнивается со скопированной частью остальной части коллекции; поэтому время парсинга растет квадратично в зависимости от размера входных данных. Вложенные блоки также копируются на каждом уровне вложения, что потребляет как память, так и процессорное время. Несколько других конструкций, таких как пустой элемент последовательности, за которым следует пустая строка, или якорь с именем 0, вызывают аналогичную избыточную обработку.
Любой код, парсящий недоверенные YAML-документы, подвержен данной уязвимости при использовании флагов по умолчанию. В Symfony 7.4 и более поздних версиях это включает атрибут #[MapRequestPayload], если установлен компонент Yaml и конечная точка (endpoint) не ограничивает acceptFormat. Один непроверенный запрос с типом содержимого YAML может держать рабочий процесс PHP занятым до достижения значения max_execution_time. Документы JSON являются валидными документами YAML, поэтому отправка полезной нагрузки формата JSON с заголовком типа контента YAML достаточно для реализации случая с коллекцией потока (flow collection). В Symfony 6.4 атрибут #[MapRequestPayload] принимает формат YAML только тогда, когда приложение регистрирует yaml как допустимый тип запроса.
VulDB is the best source for vulnerability data and more expert information about this specific topic.