CVE-2021-40438

Apache Apache

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2021-12-01

Официальное описание

A crafted request uri-path can cause mod_proxy to forward the request to an origin server choosen by the remote user. This issue affects Apache HTTP Server 2.4.48 and earlier.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость в модуле mod_proxy позволяет злоумышленнику, отправляя специально сформированный запрос с определенным URI-путем, заставить сервер перенаправить (проксировать) этот запрос на сервер, который выберет сам атакующий. Это может привести к: * SSRF (Server-Side Request Forgery): Атакующий может заставить ваш сервер делать запросы к внутренним ресурсам (например, к метаданным облачных инстансов или к другим внутренним системам), которые извне недоступны. * Обход политик безопасности: Запросы будут исходить от доверенного прокси-сервера, что может позволить обойти некоторые фильтры или контроля доступа.

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

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

  1. Ограничьте использование mod_proxy:

    • Если проксирование не требуется, полностью отключите модуль mod_proxy и связанные с ним (mod_proxy_http, mod_proxy_connect и т.д.).
    • В конфигурации виртуального хоста (<VirtualHost>) или в основном конфиге (httpd.conf) явно запретите проксирование для всех путей, кроме необходимых.
  2. Настройте строгие правила ProxyPass:

    • Никогда не используйте шаблоны ProxyPass с широким совпадением (например, ProxyPass "/"). Всегда указывайте конкретные префиксы путей.
    • Используйте директиву ProxyPass с флагом !, чтобы явно запретить проксирование для определенных путей.

    Пример безопасной конфигурации: ```apache

    Запрещаем проксирование по умолчанию для всего

    ProxyRequests Off ProxyPass /private !

    Разрешаем проксирование только для конкретного, известного пути

    ProxyPass /trusted-app/ http://backend-server:8080/ ProxyPassReverse /trusted-app/ http://backend-server:8080/ ```

  3. Используйте WAF (Web Application Firewall):

    • Настройте правила в имеющемся WAF (например, ModSecurity) для блокировки запросов, содержащих подозрительные последовательности в URI, которые могут эксплуатировать эту уязвимость (например, множественные слэши, управляющие символы).

Как исправить

Уязвимость устранена в Apache HTTP Server версии 2.4.49 и выше. Необходимо обновить сервер до этой или более новой версии.

Для систем на базе Debian/Ubuntu:

sudo apt update
sudo apt install apache2
# Убедитесь, что установленная версия не ниже 2.4.49
apache2 -v

Для систем на базе RHEL/CentOS/Rocky Linux/AlmaLinux (используя репозитории EPEL или Software Collections):

# Для систем с httpd из базовых репозиториев
sudo yum update httpd
# или
sudo dnf update httpd

# Проверьте версию
httpd -v

Для Windows: * Скачайте и установите последнюю бинарную сборку Apache 2.4.49+ с официального сайта: https://httpd.apache.org/download.cgi * Замените файлы в существующей установке или выполните чистую установку новой версии, перенеся конфигурацию.

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

# Для systemd
sudo systemctl restart apache2   # Debian/Ubuntu
sudo systemctl restart httpd     # RHEL/CentOS

# Или с помощью service
sudo service apache2 restart