Работа критических уязвимостей в Spring Framework
Spring – популярный фрейворк для разработки на Java. Практически нереально найти приложение на Java, которое не применяло бы Spring. Совсем недавно обнаружили две уязвимости, приводящие к удаленному исполнению кода. Рассмотрим принцип их работы.
Одна из уязвимостей (CVE-2018-1270) для работы модуля с веб-сокетами, (CVE-2018-1260) – модуль авторизации по протоколу OAuth2. Для начала необходимо перейти к подготовлению стенда. При работе нам необходимы:
любая ОС;
Docker;
Java 8;
Maven или подобная тулза;
IDE.
Чтобы проверять уязвимости, придется качать и запускать приложения, написанные на Java. IDE необходим для наглядности процесса.
Одним из первых багов в списке spring является удаленное выполнение команд в модуле spring-messaging. Обнаружение уязвимости было весной, причем ее статус характеризовался как критический. Некорректная логика обработки STOMP-сообщений и легкое использование удаленно была замечена даже на актуальных версиях фреймворка.
STOMP – спроектированный протокол обмена сообщениями, который основан на фреймах аналогичных HTTP. Его структура позволяет реализовываться поверх других протоколов. Сама проблема находится в модуле spring-messaging во время реализации протокола STOMP.
Для тестирования берутся примеры использования STOMP. Далее необходимо заглянуть в папку хранения фронтенда и найти app.js, в которой имеется функция, отвечающая за подключение клиента к серверу. Для этого применяется библиотека SockJS. До компиляции следует добавить переменную с пейлоадом. После компилирования можно запускать приложение.
Информация в файле DefaultSubscriptionRegistry.java отрабатывается и генерируется подписка на события для клиента. Для вызова конструктора java.lang.Class используется модификатор. Это указывает на то, что мы с легкостью можем создать экземпляр java.lang.Runtime и выполнить команду с помощью метода exec.
После привязки селектора к сообщениям, на которые пользователь подписан, продолжается общение с сервером для их получения.
Чтобы избежать проблему получения доступа к директории, необходимо не использовать файлы из файловой системы или установить в качестве сервера Tomcat/WildFly. Своевременная установке обновлений позволит избежать таких проблем и усилить безопасность.
Читать статью на:
Для просмотра ссылки необходимо нажать
Вход или Регистрация