CVE-2024-38474
Apache mod_rewrite: encoded question mark в подстановках
CVE-2024-38474 затрагивает mod_rewrite в Apache httpd до 2.4.60: ошибочная обработка кодирования в backreference может открыть CGI source или запустить script в доступном, но не адресуемом каталоге. После обновления пересмотрите правила.
Кому нужно проверить
Администраторам Apache HTTP Server и разработчикам приложений со сложными mod_rewrite правилами и CGI. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Кодирование знака вопроса в обратной ссылке может изменить интерпретацию подстановки. При подходящей конфигурации доступ к скрипту, который не должен быть доступен напрямую, может раскрыть его исходник или запустить его в CGI-контексте.
Затронутые версии
Затронут Apache HTTP Server 2.4.0–2.4.59 с уязвимыми подстановками mod_rewrite и encoded question marks в backreferences. В зависимости от доступных каталогов и CGI-настроек возможны раскрытие исходников CGI или запуск скрипта. Не всякий RewriteRule уязвим.
Исправленные версии
Исправлено в Apache HTTP Server 2.4.60. После фикса некоторые RewriteRules с небезопасным захватом и подстановкой перестают работать без флага UnsafeAllow3F; не добавляйте этот флаг без анализа конкретного правила.
Что сделать
- 1Проверьте версию httpd и все RewriteRule с backreferences, особенно правила, которые обрабатывают внешние URL и направляют запросы в CGI-каталоги.
- 2Обновите Apache до 2.4.60 или актуального поддерживаемого пакета. Сохраните конфигурацию и проверьте правила на staging, поскольку часть небезопасных подстановок может изменить поведение.
- 3Если после обновления правило перестало работать, перепишите его с явным ограничением допустимых значений и каталогов. Не добавляйте UnsafeAllow3F автоматически: флаг снимает дополнительную защиту и требует ручной проверки.
- 4После выкладки проверьте обычную маршрутизацию, доступ к CGI и каталоги сайта; убедитесь, что исходные файлы и секреты не отдаются клиенту. Изучите журналы запросов за период риска.
Как подстановка mod_rewrite влияет на CGI
Значение backreference проходит интерпретацию правила до выбора обработчика.
- 1Получить URL и backreference
- 2Проверить кодирование и подстановку
- 3Определить выбранный путь и handler
- 4Обновить правило и проверить CGI-доступ
Примеры конфигурации и проверки
apachectl -tЗапускайте на целевом сервере до перезагрузки; команда проверяет синтаксис и ничего не меняет. Она не доказывает безопасность конкретных RewriteRule — сопоставьте их с фактическими маршрутами и CGI-настройками.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.