CVE-2024-38816
Spring Framework WebMvc.fn/WebFlux.fn: обход пути к статическому ресурсу
CVE-2024-38816 касается функциональных Spring WebMvc.fn или WebFlux.fn при явной раздаче статических ресурсов из FileSystemResource. Обновите Spring и проверьте исключения: Spring Security Firewall, Tomcat и Jetty блокируют описанный сценарий.
Кому нужно проверить
Разработчикам Spring-приложений, использующих функциональные маршрутизаторы и файловые статические ресурсы. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Вредоносный запрос может прочитать доступный процессу файл за пределами ожидаемого URL-маршрута. Это не означает автоматический доступ ко всей файловой системе: важны права процесса, конкретный ресурс и наличие защитного HTTP Firewall или безопасного контейнера.
Затронутые версии
Затронуты Spring Framework 6.1.0–6.1.12, 6.0.0–6.0.23 и 5.3.39 и ниже, только если приложение использует RouterFunctions для статических ресурсов и явно задаёт FileSystemResource. Приложения с Spring Security HTTP Firewall, а также работающие на Tomcat или Jetty, по advisory блокируют вредоносные запросы.
Исправленные версии
Исправлено в 6.1.13; для 6.0.24 и 5.3.40 исправление доступно через Enterprise Support. Старые неподдерживаемые версии могут временно включить Spring Security Firewall или использовать Tomcat/Jetty, но предпочтительно обновление.
Что сделать
- 1Проверьте версию Spring Framework, RouterFunctions и обработчики статических ресурсов. Ищите явное использование FileSystemResource и учитывайте фактический сервер приложения.
- 2Обновите до 6.1.13 или исправленного поддерживаемого пакета; для веток 6.0 и 5.3 подтвердите право на 6.0.24/5.3.40 через Enterprise Support. Проверьте сборку на staging.
- 3Если обновление задерживается, включите Spring Security HTTP Firewall либо используйте Tomcat/Jetty только после проверки архитектуры. Это временная мера и не заменяет обновление.
- 4После обновления проверьте разрешённые статические файлы, права процесса, ошибки 4xx и журналы. Не тестируйте чтение реальных секретов: используйте безопасные тестовые файлы без чувствительных данных.
Проверка условий Spring CVE-2024-38816
Уязвимость требует одновременного выполнения нескольких условий.
- 1Проверить версию Spring
- 2Найти RouterFunctions и FileSystemResource
- 3Проверить Firewall и контейнер
- 4Обновить и проверить доступ к файлам
Примеры конфигурации и проверки
mvn dependency:tree -Dincludes=org.springframework:spring-webКоманда выполняется в Maven-проекте и только выводит resolved dependency. Она не подтверждает настройки RouterFunctions, FileSystemResource, Spring Security или реальный контейнер; эти условия нужно проверить отдельно.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.