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.
- Обновите Apache HTTP Server до версии 2.4.60 или выше.
Для систем на базе Debian/Ubuntu:
apt update && apt install --only-upgrade apache2
Для систем на базе RHEL/CentOS/Fedora:
dnf update httpd
- После обновления проверьте версию сервера:
httpd -v
- Перезапустите службу для применения изменений:
systemctl restart apache2
Временные меры
Если немедленное обновление невозможно, необходимо минимизировать риски путем изменения конфигурации:
-
Проверьте все директивы
RewriteRuleв конфигурационных файлах (httpd.conf,.htaccess). Избегайте использования небезопасных подстановок изQUERY_STRINGнапрямую в пути файлов. -
Используйте флаг
UnsafeAllow3F(доступен в некоторых патчах) только в крайнем случае, но лучше убедитесь, что ваши правила используют флаг[B]для экранирования неалфавитно-цифровых символов. -
Внедрите строгую фильтрацию входящих URL на уровне WAF (Web Application Firewall), блокируя попытки передачи спецсимволов и путей, характерных для обхода каталогов (LFI/Path Traversal).
-
Установите глобальное ограничение на доступ к чувствительным файлам в основном конфиге:
<FilesMatch "^\.ht|config\.php|web\.config">
Require all denied
</FilesMatch>