Nedavno je vijest objavila to otkrivena je kritična ranjivost tipa nultog dana u modulu Spring Core isporučen kao dio Spring Frameworka, što omogućuje udaljenom, neautoriziranom napadaču da izvrši svoj kod na poslužitelju.
Prema nekim procjenama, Spring Core modul koristi se u 74% Java aplikacija. Opasnost od ranjivosti smanjuje se činjenicom da samo aplikacije koje koristite napomenu "@RequestMapping" zaSpajanjem rukovatelja zahtjeva i korištenjem povezivanja parametara web obrasca u formatu “ime=vrijednost” (POJO, Plain Old Java Object), a ne JSON/XML, oni su podložni napadima. Još nije jasno na koje Java aplikacije i okvire utječe problem.
Ova ranjivost, nazvana "Spring4Shell", koristi prednost ubrizgavanja klase koja vodi do potpunog RCE-a i vrlo je ozbiljna. Naziv "Spring4Shell" odabran je jer je Spring Core sveprisutna biblioteka, slična log4j koja je iznjedrila zloglasnu ranjivost Log4Shell.
Vjerujemo da su korisnici koji koriste JDK verziju 9 i novije ranjivi na RCE napad. Sve verzije Spring Core su pogođene.
Postoje strategije za ublažavanje napada i vjerujemo da nisu svi Spring poslužitelji nužno ranjivi, ovisno o drugim čimbenicima o kojima se govori u nastavku. Uz to, trenutno preporučujemo svim korisnicima da primjene ublažavanja ili nadogradnju ako koriste Spring Core.
Iskorištavanje ranjivosti moguće je samo kada se koristi Java/JDK 9 ili noviju verziju. Ranjivost blokira stavljanje na crnu listu polja "class", "module" i "classLoader" ili korištenje eksplicitnog popisa dopuštenih polja.
problem je zbog mogućnosti zaobilaženja zaštite od ranjivosti CVE-2010-1622, Popravljeno u Spring Frameworku 2010. i povezano s izvođenjem rukovatelja classLoader prilikom raščlanjivanja parametara zahtjeva.
Rad eksploatacije svodi se na slanje zahtjeva cs parametrima "class.module.classLoader.resources.context.parent.pipeline.first.*", čija obrada, kada se koristi "WebappClassLoaderBase", dovodi do poziva klase AccessLogValve.
Navedena klasa omogućuje vam da konfigurirate logger da stvori proizvoljnu jsp datoteku u korijenskom okruženju Apache Tomcat-a i upiše kod koji je napadač odredio u ovu datoteku. Stvorena datoteka dostupna je za izravne zahtjeve i može se koristiti kao web ljuska. Za napad na ranjivu aplikaciju u okruženju Apache Tomcat, dovoljno je poslati zahtjev s određenim parametrima pomoću uslužnog programa curl.
Problem koji se razmatra u Spring Core ne smije se miješati s novootkrivenim ranjivostima CVE-2022-22963 i CVE-2022-22950. Prvi problem utječe na paket Spring Cloud i također omogućuje postizanje udaljenog izvršavanja koda (eksploatacije). CVE-2022-22963 popravljen je u izdanjima Spring Cloud 3.1.7 i 3.2.3.
Drugi problem CVE-2022-22950 prisutan je u Spring Expressionu, može se koristiti za pokretanje DoS napada i popravljen je u Spring Frameworku 5.3.17. To su temeljno različite ranjivosti. Programeri Spring Frameworka još nisu dali nikakvu izjavu o novoj ranjivosti i nisu objavili ispravak.
Kao privremenu zaštitnu mjeru, preporučuje se korištenje crne liste nevažećih parametara upita u svom kodu.
još nije jasno koliko posljedice mogu biti katastrofalne identificiranog problema i hoće li napadi biti masivni kao u slučaju ranjivosti u Log4j 2. Ranjivost je dobila kodni naziv Spring4Shell, CVE-2022-22965, a objavljena su ažuriranja Spring Framework 5.3.18 i 5.2.20 za rješavanje ranjivosti.
Zakrpa je sada dostupna od 31. ožujka 2022. u posljednjim izdanim Spring verzijama 5.3.18 i 5.2.20. Svim korisnicima preporučamo nadogradnju. Za one koji se ne mogu nadograditi, moguća su sljedeća ublažavanja:
Na temelju Praetorianove objave koja potvrđuje prisutnost RCE-a u Spring Coreu, trenutno preporučeni pristup je zakrpiti DataBinder dodavanjem crne liste ranjivih polja polja potrebnih za iskorištavanje.
Napokon da zainteresirani ste da saznate više o tome o bilješci možete provjeriti pojedinosti U sljedećem linku.