В популярном фреймворке была обнаружена критическая, уязвимость, получившая имя Spring4Shell. Баг допускает удаленное выполнение произвольного кода без аутентификации.

Spring — популярный фреймворк, позволяющий разработчикам быстро и легко создавать приложения Java с функциями энтерпрайз уровня. Такие приложения можно развернуть на серверах, к примеру, Apache Tomcat, в виде автономных пакетов со всеми необходимыми зависимостями.

Свежий баг в Spring Cloud Function, 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, ссылаясь на собственные источники.

Источник: xakep