30 марта 2022 года были опубликованы два отчета об уязвимостях, затрагивающих Spring Cloud и Spring Framework.
- CVE-2022-22963 - Уязвимость в Spring Cloud, которая потенциально может дать доступ к системным ресурсам.
- CVE-2022-22965 - Уязвимость RCE через Data Binding, затрагивающая нестандартные установки Spring Framework.
Эти отчеты в настоящее время смешиваются некоторыми поставщиками безопасности Spring Framework, что приводит к путанице среди тех, кто администрирует и использует решения Spring Framework.
CVE-2022-22963
При использовании функций маршрутизации в Spring Cloud пользователь может получить доступ к локальным ресурсам с помощью специально созданного выражения Spring Expression Language (SpEL). Эта уязвимость затрагивает версии 3.1.6 и 3.2.2 Spring Cloud. Было опубликовано несколько POC, подтверждающих наличие этой уязвимости.
Устранение проблемы
Выпущено исправление, и все затронутые версии Spring Cloud могут быть просто обновлены. Патчи были выпущены в Spring Cloud 3.1.7 и 3.2.3. В настоящее время не известно никаких других обходных путей, кроме установки патча.
CVE-2022-22965
В Spring Framework (версии 5.3.0 - 5.3.17 и 5.2.0 - 5.2.19) существует уязвимость, позволяющая удаленное выполнение кода через привязку данных. Эта уязвимость затрагивает только определенную нестандартную конфигурацию со следующими предварительными условиями:
JDK 9 или выше - Apache Tomcat в качестве контейнера сервлетов - упаковка в виде WAR (в отличие от стандартного банка Spring Boot) - зависимость spring-webmvc или spring-webflux.
Эта уязвимость была проверена только на вышеуказанной нестандартной конфигурации. Если приложение развернуто через стандартный исполняемый файл Spring Boot jar, оно не уязвимо.
Устранение проблемы
Для данной уязвимости доступно исправление. Администраторам следует обновить версию до 5.3.18+ или 5.2.19+. Если патч исправлен, другие меры по устранению уязвимости не требуются. В случае невозможности установки патча компания Spring опубликовала набор обходных путей в своем блоге, посвященном раскрытию информации.
Обнаружение
Уязвимые веб-фреймворки, как известно, трудно выявить извне, поскольку после компиляции они обычно отображаются с прозрачным для клиента фреймворком.
Локально существует множество способов определения уязвимости. Исследователь Флориан Рот опубликовал локальный сканер JAR/WAR для выявления потенциально уязвимых классов. Если это возможно, системы, соответствующие критериям, определенным для каждого CVE, следует считать уязвимыми и исправлять их.
Пользователи GitHub могут проверить свои репозитории на наличие уязвимых версий фреймворка Spring с помощью Dependabot, если он включен. Это можно увидеть либо на вкладке Security в каждом репозитории, либо в записи GitHub Security Advisory для каждого CVE.