Kritikus, 0 napos sebezhetőséget azonosítottak a Spring Core modulban, amely a Spring Framework részeként van szállítva, és lehetővé teszi a hitelesítés nélküli távoli támadók számára, hogy kódot hajtsanak végre a kiszolgálón. Egyelőre nem világos, hogy az azonosított probléma milyen katasztrofális következményekkel jár, és hogy a támadások olyan tömegesek lesznek-e, mint a Log4j 2 sebezhetősége esetében. A sérülékenységet Spring4Shell kódnévvel látták el, de CVE azonosítót még nem rendeltek hozzá. A tavaszi keretrendszerben a probléma továbbra is megoldatlan, és számos működő exploit prototípus már elérhető online (1, 2, 3, 4). A problémát súlyosbítja, hogy a Spring Framework-re épülő nagyvállalati Java-alkalmazások rootként futnak, és a biztonsági rés lehetővé teszi a rendszer teljes feltörését.
Egyes becslések szerint a Spring Core modult a Java alkalmazások 74%-ában használják. A sérülékenység veszélyét csökkenti, hogy csak azok az alkalmazások fenyegetik a támadást, amelyek a „@RequestMapping” annotációt használják a kéréskezelők összekapcsolásakor és a webes űrlapparaméterek „name=value” formátumú kötésére (POJO, Plain Old Java Object). , a JSON/XML használata helyett.
Egyelőre nem világos, hogy mely Java-alkalmazásokat és keretrendszereket érinti a probléma. A sérülékenység megakadályozza az „class”, „module” és „classLoader” mezők feketelistára való felvételét, illetve az engedélyezett mezők explicit engedélyezési listájának használatát. A sérülékenység kihasználása csak Java/JDK 9 vagy újabb verzió használata esetén lehetséges. A problémát a CVE-2010-1622 biztonsági rés elleni védelem megkerülésének lehetősége okozza, amelyet a Spring Framework-ben még 2010-ben javítottak, és a kérésparaméterek elemzésekor a classLoader kezelő végrehajtásához kapcsolódnak.
Az exploit a „class.module.classLoader.resources.context.parent.pipeline.first.*” paraméterekkel rendelkező kérés elküldésével működik, amelynek feldolgozása egy jsp fájl létrehozásához vezet az Apache Tomcat gyökérkörnyezetben és az íráshoz. a támadó által ehhez a fájlhoz megadott kód. A létrehozott fájl elérhetővé válik a közvetlen kérések számára, és webhéjként használható. Egy sebezhető alkalmazás megtámadásához az Apache Tomcat környezetben elegendő egy kérést küldeni bizonyos paraméterekkel a curl segédprogrammal. curl -v -d "class.module.classLoader.resources.context.parent.pipeline .first.pattern=code_to_insert_ into_file &class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp &class.module.classLoader .resources.context.parent.pipeline.first.directory=webapps/ROOT &class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar &class.module.classLoader.resources.context.parent.pipeline.first .fileDateFormat=” http://localhost:8080/springmvc5-helloworld-exmaple-0.0.1-SNAPSHOT/rapid7
A Spring Core problémáját nem szabad összetéveszteni a nemrég azonosított CVE-2022-22963 és CVE-2022-22950 biztonsági réssel. Az első probléma a Spring Cloud csomagot érinti, és a 3.1.7 és 3.2.3 kiadásokban javították. A második probléma a Spring Expressionben jelen van, és a Spring Framework 5.3.17-ben javítva van. Ezek alapvetően különböző sebezhetőségek. A Spring Framework fejlesztői még nem nyilatkoztak az új sebezhetőségről, és nem tettek közzé javítást.
Ideiglenes védelmi intézkedésként javasoljuk az érvénytelen kérési paraméterek feketelistáját a kódban: import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.InitBinder; @ControllerAdvice @Order(10000) public class BinderControllerAdvice { @InitBinder public void setAllowedFields(WebDataBinder dataBinder) { String[] denylist = new String[]{"class.", "Class.", ".class.", ".Class ."}; dataBinder.setDisallowedFields(megtagadó lista); } }
Forrás: opennet.ru
