Исследователи обнаружили критическую уязвимость CVE-2022-22965 в Spring — универсальном фреймворке для Java-платформы с открытым исходным кодом. К сожалению, подробности об уязвимости утекли в публичный доступ до официальной публикации и выпуска исправлений.
Уязвимость незамедлительно привлекла внимание специалистов по информационной безопасности, поскольку потенциально она представляет серьезную опасность для множества веб-приложений. По аналогии с нашумевшей Log4Shell, новой уязвимости дали имя Spring4Shell.
Создатели фреймворка Spring, принадлежащего компании VMware, уже выпустили патчи, исправляющие уязвимые приложения, так что мы рекомендуем всем компаниям, применяющим Spring Framework версий 5.3 и 5.2, незамедлительно обновиться до версий 5.3.18 или 5.2.20.
Что такое Spring4Shell и почему эта уязвимость столь опасна
Уязвимость относится к классу RCE, то есть дает возможность атакующему дистанционно запустить вредоносный код. На данный момент ее относят к классу критических, с рейтингом 9.8 по десятибалльной системе CVSS v3.0. Уязвимость затрагивает приложения Spring MVC и Spring WebFlux, работающие под Java Development Kit версии 9 или старше.
Исследователи сообщили о найденной уязвимости VMware в ночь со вторника на среду, но уже в среду доказательство эксплуатации уязвимости появилось на GitHub. Его быстро удалили, но код успели увидеть специалисты по безопасности (некоторые из них подтвердили опасность уязвимости). И вряд ли есть смысл надеяться на то, что публикация настолько интересного эксплойта прошла мимо злоумышленников.
Фреймворк Spring достаточно популярен у Java-разработчиков, а потому множество приложений могут оказаться уязвимыми. По информации Bleeping Computer, уязвимые Java-приложения могут послужить причиной компрометации огромного количества серверов. Более того — по их данным, уязвимость уже активно эксплуатируется в атаках.
Условия успешной эксплуатации уязвимости Spring4Shell
Известный на момент публикации вариант эксплуатации уязвимости требует стечения ряда обстоятельств. Для успешной атаки на стороне атакуемого сервера должны использоваться следующие компоненты:
- Java Development Kit версии 9 или старше.
- Apache Tomcat в качестве контейнера сервлетов.
- Формат файлов WAR (Web Application Resource) вместо дефолтного JAR.
- Зависимости от spring-webmvc или spring-webflux.
- Фреймворк Spring версий от 5.3.0 до 5.3.17, от 5.2.0 до 5.2.19, или более старые.
Однако не факт, что на данный момент известны все варианты эксплуатации уязвимости. Вполне возможно, что ту же уязвимость можно проэксплуатировать и как-то иначе.
Более техническое описание проблемы вместе с индикаторами компрометации для эксплойтов под эту уязвимость можно найти в блоге на сайте Securelist. Там же находится описание еще одной критической уязвимости в Java-фреймворке Spring — CVE-2022-22963.
Как защититься от Spring4Shell
Основной совет всем, кто использует в разработке фреймворк Spring, — перейти на безопасные версии 5.3.18 или 5.2.20.
Apache Software Foundation также выпустила исправленные версии Apache Tomcat 10.0.20, 9.0.62 и 8.5.78, в которых вектор атаки закрыт на стороне Tomcat.
Также разработчики Spring выпустили исправленные версии расширения Spring Boot 2.5.12 и 2.6.6, зависимые от исправленной версии Spring Framework 5.3.18.
Если вы по каким-либо причинам не можете обновить вышеперечисленное программное обеспечение, то на официальном сайте Spring опубликовано несколько вариантов временного решения этой проблемы.
Для того чтобы минимизировать шансы эксплуатации уязвимостей, все серверы, как и любые иные машину, имеющие выход в Интернет, следует защитить надежным решением. Если вы используете продукты «Лаборатории Касперского», то убедитесь, что модули Advanced Exploit Prevention и Network Attack Blocker не отключены.