Kriitiline 0-pÀeva haavatavus Spring Frameworkis, mida kasutatakse paljudes Java projektides

Spring Frameworki komponent Spring Core'il on tuvastatud kriitiline 0-pĂ€eva haavatavus, mis vĂ”imaldab autentimata kaugrĂŒnnakutel kĂ€ivitada oma koodi serveris. Praegu ei ole selge, kui katastroofilised vĂ”ivad olla avastatud probleemi tagajĂ€rjed ja kas rĂŒnnakud vĂ”ivad olla sama massilised kui Log4j 2 haavatavuse puhul. Haavatavusele on antud koodnimi Spring4Shell, kuid CVE-identifikaatorit ei ole veel mÀÀratud. Spring Frameworkis jÀÀb probleem parandamata ja internetis on juba saadaval mitu töötavat eksploiti (1, 2, 3, 4). Probleemi teravdab asjaolu, et paljud ettevĂ”tte Java-rakendused, mis tuginevad Spring Frameworkile, töötavad root-Ă”igustega ning haavatavus vĂ”imaldab sĂŒsteemi tĂ€ielikku kompromiteerimist.

MĂ”ningate hinnangute kohaselt kasutatakse Spring Core'i moodulit 74% Java-rakendustest. Haavatavuse ohtu vĂ€hendab see, et rĂŒnnakud mĂ”jutavad ainult rakendusi, mis kasutavad pĂ€ringute töötlejate ĂŒhendamisel annotatsiooni „@RequestMapping” ja veebivormide parameetrite sidumist formati „name=value” (POJO, Plain Old Java Object), selle asemel et kasutada JSON/XML-i.

Millised Java-rakendused ja raamistikud tÀpselt selle probleemiga kokku puutuvad, pole veel selge. Haavatavus takistab 'class', 'module' ja 'classLoader' vÀljade musta nimekirja lisamist vÔi lubatud valgete nimekirjade vÀljade selgelt mÀÀratlemist. Haavatavuse Àrakasutamine on vÔimalik ainult Java/JDK 9 vÔi uuema versiooni kasutamisel. Probleem tuleneb vÔimalusest mööda minna haavatavusest CVE-2010-1622, mis parandati Spring Frameworkis juba 2010. aastal ja millega on seotud classLoaderi töötleja kÀitamine pÀringuparametrite tÔlgendamisel.

Ekspluata töö seisneb pĂ€ringu saatmises parameetritega "class.module.classLoader.resources.context.parent.pipeline.first.*", mille töötlemine viib Apache Tomcat'i juurekeskkonnas jsp-faili loomisele ja rĂŒndaja poolt mÀÀratud koodi salvestamisele sellesse faili. Loodud fail muutub otsepöördumiseks kĂ€ttesaadavaks ja vĂ”ib toimida web shell'ina. RĂŒndamiseks haavatavale rakendusele Apache Tomcat'i keskkonnas on piisav saata pĂ€ring teatud parameetritega, kasutades utiliiti curl. curl -v -d "class.module.classLoader.resources.context.parent.pipeline.first.pattern=kood_faili_sisestamiseks &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

Spring Core'i arutatud probleemi ei tohi segamini ajada hiljuti tuvastatud haavatavustega CVE-2022-22963 ja CVE-2022-22950. Esimene probleem puudutab paketti Spring Cloud ning on kÔrvaldatud versioonides 3.1.7 ja 3.2.3. Teine probleem leidub Spring Expression'is ja on parandatud Spring Framework'is 5.3.17. Need on pÔhimÔtteliselt erinevad haavatavused. Spring Framework'i arendajad pole veel uudse haavatavuse kohta teateid andnud ega avaldanud parandust.

Ajutise meetmena soovitatakse koodis kasutada mittesobivate pÀringuparametrite musta nimekirja: 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(denylist); } }

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster