Уязвимость в http-сервере Apache 2.4.49, позволяющая получить файлы вне корня сайта

В экстренном порядке сформировано обновление http-сервера Apache 2.4.50, в котором устранена уже активно эксплуатируемая 0-day уязвимость (CVE-2021-41773), позволяющая получить доступ к файлам из областей вне корневого каталога сайта. При помощи уязвимости можно загрузить произвольные системные файлы и исходные тексты web-скриптов, доступные для чтения пользователю, под которым запущен http-сервер. Разработчики были уведомлены о проблеме ещё 17 сентября, но смогли выпустить обновление только сегодня, после того как в сети были зафиксированы случаи применения уязвимости для атаки на сайты.

Опасность уязвимости сглаживает то, что проблема проявляется только в недавно выпущенной версии 2.4.49 и не затрагивает все более ранние выпуски. В стабильных ветках консервативных серверных дистрибутивов выпуск 2.4.49 ещё не использовался (DebianRHELUbuntuSUSE), но проблема затронула непрерывно обновляемые дистрибутивы, такие как FedoraArch Linux и Gentoo, а также порты FreeBSD.Уязвимость вызвана ошибкойвнесённой в ходе переработки кода для нормализации путей в URI, из-за которой закодированный при помощи последовательности «%2e» символ точки в пути не нормализировался, если ему предшествовала другая точка. Таким образом, оказалась возможной подстановка неочищенных символов «../» в результирующий путь через указание в запросе последовательности «.%2e/». Например, запрос вида «https://example.com/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd» или «https://example.com/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/hosts» позволял получить содержимое файла «/etc/passwd». Проблема не проявляется, если доступ к каталогам явно запрещён при помощи настройки «require all denied«. Например для частичной защиты можно указать в файле конфигурации:

<Directory /> 
require all denied 
</Directory>

В версии Apache httpd 2.4.50 также устранена ещё одна уязвимость (CVE-2021-41524), затрагивающая модуль с реализацией протокола HTTP/2. Уязвимость позволяла через отправку специально оформленного запроса инициировать разыменование нулевого указателя и вызвать крах процесса. Данная уязвимость также проявляется только в версии 2.4.49. В качестве обходного пути защиты можно отключить поддержку протокола HTTP/2.

Источник: OpenNET