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.

  1. Для систем на базе Debian/Ubuntu: bash sudo apt update sudo apt install apache2 Убедитесь, что установлена версия 2.4.51 или новее: bash apache2 -v

  2. Для систем на базе RHEL/CentOS/Rocky Linux/AlmaLinux (используя репозитории EPEL или AppStream): bash sudo yum update httpd Убедитесь, что установлена версия 2.4.51 или новее: bash httpd -v

  3. Для Windows: Обновите установщик с официального сайта Apache (https://httpd.apache.org/download.cgi) до версии 2.4.51 или новее. Удалите старую версию перед установкой новой.

  4. Если используется сборка из исходного кода:

    • Скачайте и установите версию 2.4.51 или новее.
    • Пересоберите и переустановите сервер.

После обновления обязательно перезапустите Apache:

# Для systemd
sudo systemctl restart apache2   # или httpd

# Для SysVinit
sudo service apache2 restart     # или httpd

Временное решение

Если немедленное обновление невозможно, примите следующие меры:

  1. Отключите CGI-скрипты (mod_cgi), если они не являются критически важными для работы. В основном конфигурационном файле (например, httpd.conf) или в виртуальных хостах закомментируйте или удалите директивы, связанные с CGI: # Уберите или закомментируйте строки вида: # ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" # AddHandler cgi-script .cgi .pl После изменений перезапустите Apache.

  2. Настройте 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'"
  3. Ужесточите контроль доступа. Убедитесь, что для всех каталогов, не предназначенных для публичного доступа через Alias, явно прописана директива: <Directory "/путь/к/закрытой/директории"> Require all denied </Directory>