CVE-2021-41773
Apache HTTP Server
2021-11-03
Apache HTTP Server contains a path traversal vulnerability that allows an attacker to perform remote code execution if files outside directories configured by Alias-like directives are not under default �require all denied� or if CGI scripts are enabled. The original patch issued under this CVE ID is insufficient, please review remediation information under CVE-2021-42013.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2021-41773) в Apache HTTP Server 2.4.49 позволяет злоумышленнику, отправив специально сформированный запрос с использованием символов кодировки URL (например, %2e для точки), обойти ограничения директив Alias и получить доступ к файлам за пределами корневых каталогов веб-сервера. Если эти файлы не защищены политикой require all denied или если на сервере включены CGI-скрипты, это может привести к раскрытию конфиденциальных файлов (например, /etc/passwd) или удаленному выполнению кода (RCE).
Важно: Исходный патч для этой CVE оказался неполным. Полное исправление содержится в CVE-2021-42013.
Как исправить
Необходимо обновить Apache HTTP Server до версии, в которой исправлены обе уязвимости: CVE-2021-41773 и CVE-2021-42013.
-
Для систем на базе Debian/Ubuntu:
bash sudo apt update sudo apt install apache2Убедитесь, что установлена версия 2.4.51 или новее:bash apache2 -v -
Для систем на базе RHEL/CentOS/Rocky Linux/AlmaLinux (используя репозитории EPEL или AppStream):
bash sudo yum update httpdУбедитесь, что установлена версия 2.4.51 или новее:bash httpd -v -
Для Windows: Обновите установщик с официального сайта Apache (https://httpd.apache.org/download.cgi) до версии 2.4.51 или новее. Удалите старую версию перед установкой новой.
-
Если используется сборка из исходного кода:
- Скачайте и установите версию 2.4.51 или новее.
- Пересоберите и переустановите сервер.
После обновления обязательно перезапустите Apache:
# Для systemd
sudo systemctl restart apache2 # или httpd
# Для SysVinit
sudo service apache2 restart # или httpd
Временное решение
Если немедленное обновление невозможно, примите следующие меры:
-
Отключите CGI-скрипты (
mod_cgi), если они не являются критически важными для работы. В основном конфигурационном файле (например,httpd.conf) или в виртуальных хостах закомментируйте или удалите директивы, связанные с CGI:# Уберите или закомментируйте строки вида: # ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" # AddHandler cgi-script .cgi .plПосле изменений перезапустите Apache. -
Настройте WAF (Web Application Firewall):
- Добавьте правило для блокировки запросов, содержащих последовательности типа
.%2e/,.%2e%2e/или%2e%2e/в пути URL. - Пример правила для ModSecurity (CRS):
SecRule REQUEST_URI "@rx \.(%2e|\.)(%2f|/)" "id:100073,phase:1,deny,status:403,msg:'Path Traversal Attack Attempt'"
- Добавьте правило для блокировки запросов, содержащих последовательности типа
-
Ужесточите контроль доступа. Убедитесь, что для всех каталогов, не предназначенных для публичного доступа через
Alias, явно прописана директива:<Directory "/путь/к/закрытой/директории"> Require all denied </Directory>