В частности, сообщается, что уязвимы следующие версии: 2.7.0 — 2.7.37, 2.8.0 — 2.8.30, 3.2.0 -3.2.13, и 3.3.0 — 3.3.12. Интересный факт: в остальных версиях эти уязвимости также могут присутствовать, но исправлений для них нет (по причине того что исправления есть только в поддерживаемых версиях).

Для исправления уязвимостей необходимо обновиться до версий 2.7.38, 2.8.31, 3.2.14, 3.3.13, 3.4-BETA5, или 4.0-BETA5.



И немного подробнее о самих уязвимостях:

1. Защита CSRF не использует разные токены для HTTP и HTTPS


Из-за этого токен мог подвергнуться атаке MITM (человек посередине) с использованием HTTP, и тот же токен мог использоваться в контексте HTTPS для совершения CSRF-атак.

Более подробно о уязвимости: ссылка

2. Уязвимость открытого перенаправления в обработчике безопасности


DefaultAuthenticationSuccessHandler или DefaultAuthenticationFailureHandler берут содержимое параметра _target_path и генерируют перенаправление, но при этом не производится проверка, является ли сам путь абсолютным URL-адресом для внешнего домена, тем самым открывается уязвимость переадресации.

Открытая уязвимость переадресации не слишком опасна для сервера с Symfony, но ее можно использовать, например, для установки эффективных фишинговых атак.

Более подробно о уязвимости: ссылка

3. Выход за границы путей в Intl bundle


Компонент Intl включает в себя различные считыватели пакетов, которые используются для чтения ресурсов из локальной файловой системы. Методы read () этих классов используют path и locale для определения языка (имеется в виду работа с многоязычными приложениями) и бандла для извлечения данных.

Значение аргумента locale обычно извлекается из ненадежного пользовательского ввода (например, параметра URL). Злоумышленник может использовать этот аргумент для перехода к произвольным каталогам с помощью атаки “точка-точка-косая черта” (../../).

Более подробно о уязвимости: ссылка

4. Возможность выдать POST запрос как загружаемый файл


Когда форма отправляется пользователем, классы обработчика запроса компонента Form объединяют данные POST (известные как массив $ _POST в простом PHP) и загружают файлы (известные как массив $ _FILES в простой PHP) в один массив. Этот большой массив формирует данные, которые затем привязываются к форме. На этом этапе нет никакой разницы между представленными данными POST и загруженными файлами.

Пользователь может отправить обработанный HTTP-запрос, где значение FileType отправляется как обычные POST-данные, которые могут быть интерпретированы как путь к файлам на стороне сервера (например, file:///etc/passwd). Если приложение не выполняет каких-либо дополнительных проверок относительно значения, переданного в FileType, содержимое данного файла на сервере может быть подвергнуто атаке.

Более подробно о уязвимости: ссылка

Послесловие:


К счастью, в Symfony начиная с версии 2.7 встроен автоматический анализатор известных уязвимостей, который при помощи простой консольной команды проверяет все установленные зависимости:

bin/security-checker security:check

В нашем случае команда автоматически выполнялась при переключении веток, потому об обнаружении уязвимостей нам стало известно почти сразу, что помогло их закрыть, по факту, быстрее, чем мы прочитали, какие уязвимости были обнаружены.

Если по каким-то причинам вы не можете использовать эту команду в консоли, вы всегда можете проверить свои зависимости на официальном сайте.

Комментарии (1)


  1. rmrevin
    21.11.2017 13:00

    Это отличная новость. Symfony замечательный фреймворк.