В популярном фреймворке была обнаружена критическая, уязвимость, получившая имя Spring4Shell. Баг допускает удаленное выполнение произвольного кода без аутентификации.
Spring — популярный фреймворк, позволяющий разработчикам быстро и легко создавать приложения Java с функциями энтерпрайз уровня. Такие приложения можно развернуть на серверах, к примеру, Apache Tomcat, в виде автономных пакетов со всеми необходимыми зависимостями.
Свежий баг в Spring Cloud Function, CVE-2022-22965 и CVE-2022-22963, был обнаружен ранее на этой неделе, а вчера в сети ненадолго появился PoC-эксплоит, который вскоре был удален из открытого доступа. Так как многие ИБ-исследователи успели загрузить опубликованный код, теперь компании предупреждают, что уязвимость действительно вызывает серьезные опасения.
Проблема Spring4Shell связана с небезопасной десериализацией переданных аргументов. Хотя изначально предполагалось, что проблема влияет на все приложения Spring, работающие на Java 9 или более поздних версии, в итоге оказалось, что существуют определенные ограничения, которые должны быть соблюдены, чтобы приложение Spring стало уязвимым.
Аналитик CERT/CC Уилл Дорманн объясняет, что приложение должно использовать Spring Beans, Spring Parameter Binding, а также Spring Parameter Binding должно быть настроено для использования не базовых типов параметров, таких как POJO.
ИБ-компания Praetorian тоже подтвердила, что проявления ошибки связаны с определенными конфигурациями.
«Для эксплуатации требуется эндпоинт с включенным DataBinder (например, POST-запрос, который автоматически декодирует данные из тела запроса), и все сильно зависит от контейнера сервлетов для приложения, — рассказывают эксперты в блоге. — Например, когда Spring развернут на Apache Tomcat, доступен WebAppClassLoader, что позволяет злоумышленнику вызывать геттеры и сеттеры, чтобы в итоге записать вредоносный JSP-файл на диск.
Но если Spring развернут с использованием Embedded Tomcat Servlet Container, загрузчик классов — это LaunchedURLClassLoader, доступ к которому ограничен.
В некоторых конфигурациях эксплуатация этой проблемы предельно проста, поскольку для этого нужно лишь отправить специально подготовленный POST-запрос уязвимой системе. Однако использование [проблемы] в других конфигурациях потребует проведения дополнительных исследований, чтобы подобрать пейлоады, которые будут эффективны».
Так как для уязвимости пока нет патча, эксперты Praetorian описывают способ смягчения проблемы Spring4Shell: путем запрещения передачи определенных паттернов Spring Core DataBinder.
К сожалению, при всех ограничениях, о которых пишут исследователи, сообщается, что проблему Spring4Shell уже используют хакеры. Так, об атаках с применением свежего бага пишет издание Bleeping Computer, ссылаясь на собственные источники.