Symfony выпустила исправления для нескольких уязвимостей в своих компонентах. Часть из них позволяет обойти правила доступа. На сервере они дают прочитать файлы или вызвать отказ в обслуживании. Затронуты приложения, которые используют такие компоненты и не установили свежие версии.
Обход доступа, чтение файлов и CVE-2026-118516
Уведомления опубликованы 4 ноября 2026 года и описывают несколько разных уязвимостей. Среди них есть CVE-2026-118516, идентификатор уязвимости в маршрутизаторе Symfony. По шкале оценки уязвимостей CVSS 4.0 она набирает 6.3 балла. Атака идёт по сети. При этом учётные данные и участие пользователя не нужны, но есть особые условия атаки.
В маршрутах с хостом скомпилированный сопоставитель склеивает хост и путь в одну строку. Проверка устроена так, что заполнитель хоста может захватить начало пути. Правила доступа по пути при этом смотрят на реальный путь. Поэтому анонимный запрос может дойти до защищённого контроллера. Сопоставитель без компиляции не находит маршрут.
Другие уязвимости в компонентах
Кроме того, в компоненте filesystem проверка пути принимает за корень любой префикс перед разделителем схемы. Из-за этого путь из пользовательских данных может выйти за базовый каталог. В компоненте serializer уязвимость в DataUriNormalizer открывает адрес данных со схемой в верхнем регистре как локальный файл. Клиент может читать файл. В компоненте http-foundation правила перед PHP можно обойти, добавив путь к имени скрипта.
Уязвимость в filesystem затрагивает AssetMapper. Компонент собирает пути к файлам из таблиц стилей удалённого пакета. За пределы каталога зависимостей вредоносный пакет может записать файл. Это происходит при установке зависимостей. В результате код пакета попадает в публичный каталог.
В http-foundation сгенерированные ссылки могут указывать на хост, выбранный клиентом. Так атакующий заставляет пользователя открыть ссылку. При этом в security-http программный вход пропускает проверку учётной записи после входа. Это происходит, если приложение использует свой проверяющий компонент. В результате просроченная учётная запись может войти через сброс пароля.
В http-client кэш адресов позволяет перебирать внутренние порты через подмену ответа системы доменных имён. Проверка сетевого адреса при этом срабатывает, но соединение уже установлено. Кроме того, в json-path запрос может надолго занять PHP-процесс. Документ в 2 МБ и запрос в 2.5 КБ занимают 3.5 минуты процессорного времени. Это приводит к отказу в обслуживании.
Исправления и условия обновления
В yaml разбор одного документа тоже приводит к отказу в обслуживании. Атака идёт по сети. При этом учётные данные и участие пользователя не нужны. Достаточно одного запроса с типом содержимого YAML. Документ в 93 байта может занять 15 секунд.
Исправления вышли в версиях 5.4.56, 6.4.50, 7.4.23 и 8.1.11. Для json-path нужны версии 7.4.23 или 8.1.11. После этого нужно очистить кэш маршрутов. Иначе скомпилированные правила останутся уязвимыми. Также в приложениях с автоматическим разбором запроса нужно проверить список разрешённых форматов.
После этого правила доступа снова оценивают реальный путь. Кроме того, DataUriNormalizer больше не открывает локальные файлы. YAML-парсер ограничивает время разбора. JsonPath завершает запрос с исключением при исчерпании бюджета. При этом проверка учётных записей снова работает для программного входа.
Нужно проверить маршруты с заполнителями хоста. Также нужно проверить правила доступа перед PHP. Кроме того, нужно проверить обработку YAML и json-path на публичных точках входа. Это поможет найти затронутые участки.
Сведений об эксплуатации этих уязвимостей в реальных атаках в уведомлениях нет. Обходных мер в уведомлениях не описано. При этом патчи закрывают обход правил доступа и чтение файлов. Обновление также ограничивает время разбора YAML и JsonPath.
Ссылки
- https://github.com/symfony/symfony/security/advisories/GHSA-3h27-hjv7-fqjx
- https://github.com/symfony/symfony/security/advisories/GHSA-5mx8-mwrp-5693
- https://github.com/symfony/symfony/security/advisories/GHSA-6prc-h956-hxjq
- https://github.com/symfony/symfony/security/advisories/GHSA-8f57-m8wj-x65w
- https://github.com/symfony/symfony/security/advisories/GHSA-c7hm-wqwp-f9v8
- https://github.com/symfony/symfony/security/advisories/GHSA-cpww-5vpx-72x7
- https://github.com/symfony/symfony/security/advisories/GHSA-hwfg-qwvh-2wfx
- https://github.com/symfony/symfony/security/advisories/GHSA-pxj9-jh84-vhm5
- https://github.com/symfony/symfony/security/advisories/GHSA-xqw3-x93m-887x