CVE-2024-38475

Apache HTTP Server

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

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

2025-05-01

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

Apache HTTP Server contains an improper escaping of output vulnerability in mod_rewrite that allows an attacker to map URLs to filesystem locations that are permitted to be served by the server but are not intentionally/directly reachable by any URL, resulting in code execution or source code disclosure.

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

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

CVE-2024-38475 — это критическая уязвимость в модуле mod_rewrite сервера Apache HTTP Server, связанная с некорректным экранированием выходных данных.

Проблема возникает, когда правила перезаписи (RewriteRules) подставляют пользовательский ввод в пути файловой системы без надлежащей очистки. Злоумышленник может сформировать специальный URL, который позволит «вырваться» из логики ограничений и сопоставить запрос с файлами, которые сервер имеет право читать, но которые не должны быть доступны через веб-интерфейс. Это приводит к: * Раскрытию исходного кода (например, конфигурационных файлов или скриптов). * Удаленному выполнению кода (RCE), если злоумышленнику удастся направить запрос на интерпретатор (например, через CGI-скрипты в обход ограничений).

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

Единственным надежным способом устранения уязвимости является обновление Apache HTTP Server до актуальной версии, где изменены механизмы обработки подстановок в mod_rewrite.

  1. Обновите Apache HTTP Server до версии 2.4.60 или выше.

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

apt update && apt install --only-upgrade apache2

Для систем на базе RHEL/CentOS/Fedora:

dnf update httpd

  1. После обновления проверьте версию сервера:
httpd -v

  1. Перезапустите службу для применения изменений:
systemctl restart apache2

Временные меры

Если немедленное обновление невозможно, необходимо минимизировать риски путем изменения конфигурации:

  1. Проверьте все директивы RewriteRule в конфигурационных файлах (httpd.conf, .htaccess). Избегайте использования небезопасных подстановок из QUERY_STRING напрямую в пути файлов.

  2. Используйте флаг UnsafeAllow3F (доступен в некоторых патчах) только в крайнем случае, но лучше убедитесь, что ваши правила используют флаг [B] для экранирования неалфавитно-цифровых символов.

  3. Внедрите строгую фильтрацию входящих URL на уровне WAF (Web Application Firewall), блокируя попытки передачи спецсимволов и путей, характерных для обхода каталогов (LFI/Path Traversal).

  4. Установите глобальное ограничение на доступ к чувствительным файлам в основном конфиге:

<FilesMatch "^\.ht|config\.php|web\.config">
    Require all denied
</FilesMatch>