Наскоро новината съобщи това беше открита критична уязвимост от типа нулев ден в модула Spring Core се доставя като част от Spring Framework, което позволява на отдалечен, неудостоверен нападател да изпълни кода си на сървъра.
Според някои оценки модулът Spring Core използван в 74% от Java приложенията. Опасността от уязвимост се намалява от факта, че само приложенията, които използвайте анотацията "@RequestMapping", за даЧрез свързване на манипулатори на заявки и използване на свързване на параметри на уеб формуляра във формат „име=стойност“ (POJO, обикновен стар Java обект), а не JSON/XML, те са податливи на атака. Все още не е ясно кои Java приложения и рамки са засегнати от проблема.
Тази уязвимост, наречена "Spring4Shell", се възползва от инжектирането на клас, което води до пълен RCE и е много сериозна. Името "Spring4Shell" беше избрано, защото Spring Core е повсеместна библиотека, подобна на log4j, която породи прословутата уязвимост Log4Shell.
Вярваме, че потребителите, работещи с JDK версия 9 и по-нови, са уязвими към RCE атака. Всички версии на Spring Core са засегнати.
Има стратегии за смекчаване на атаката и ние вярваме, че не всички сървъри на Spring са непременно уязвими, в зависимост от други фактори, разгледани по-долу. Въпреки това, в момента препоръчваме на всички потребители да прилагат смекчаване или надграждане, ако използват Spring Core.
Експлоатацията на уязвимостта е възможна само при използване на Java/JDK 9 или по-нова версия. Уязвимостта блокира черния списък на полетата "class", "module" и "classLoader" или използването на изричен бял списък с разрешени полета.
Проблемът се дължи на възможността за заобикаляне на защитата срещу уязвимостта CVE-2010-1622, Фиксирано в Spring Framework през 2010 г. и свързано с изпълнението на манипулатора на classLoader при анализиране на параметрите на заявката.
Операцията на експлойта се свежда до изпращане на заявка cс параметрите "class.module.classLoader.resources.context.parent.pipeline.first.*", чиято обработка при използване на "WebappClassLoaderBase" води до извикване на класа AccessLogValve.
Посоченият клас ви позволява да конфигурирате регистратора да създаде произволен jsp файл в основната среда на Apache Tomcat и да запишете кода, определен от нападателя, в този файл. Създаденият файл е достъпен за директни заявки и може да се използва като уеб обвивка. За да атакувате уязвимо приложение в средата на Apache Tomcat, достатъчно е да изпратите заявка с определени параметри с помощта на помощната програма curl.
Проблемът, който се разглежда в Spring Core да не се бърка с новооткрити уязвимости CVE-2022-22963 и CVE-2022-22950. Първият проблем засяга пакета Spring Cloud и също така позволява да се постигне отдалечено изпълнение на код (експлойт). CVE-2022-22963 е фиксиран във версиите Spring Cloud 3.1.7 и 3.2.3.
Вторият проблем CVE-2022-22950 присъства в Spring Expression, може да се използва за стартиране на DoS атаки и е коригиран в Spring Framework 5.3.17. Това са коренно различни уязвимости. Разработчиците на Spring Framework все още не са направили изявление за новата уязвимост и не са пуснали корекция.
Като временна мярка за защита се препоръчва да използвате черен списък с невалидни параметри на заявката във вашия код.
още не е ясно колко катастрофални могат да бъдат последствията на идентифицирания проблем и дали атаките ще бъдат толкова масови, колкото в случая с уязвимостта в Log4j 2. Уязвимостта е с кодово име Spring4Shell, CVE-2022-22965 и са пуснати актуализации на Spring Framework 5.3.18 и 5.2.20 за справяне с уязвимостта.
Пач е наличен от 31 март 2022 г. в последните пуснати Spring версии 5.3.18 и 5.2.20. Препоръчваме на всички потребители да надстроят. За тези, които не могат да надстроят, са възможни следните смекчавания:
Въз основа на публикацията на Praetorian, потвърждаваща наличието на RCE в Spring Core, в момента препоръчания подход е да се коригира DataBinder чрез добавяне на черен списък с уязвими полеви модели, необходими за експлоатация.
Накрая да вие се интересувате да научите повече за това относно бележката, можете да проверите подробностите В следващия линк.