I ricercatori hanno scoperto una vulnerabilità critica, CVE-2022-22965, in Spring, un framework open source per la piattaforma Java. Sfortunatamente, i dettagli sulla vulnerabilità sono trapelati al pubblico prima che l’annuncio ufficiale fosse pubblicato e le relative patch rilasciate.
La vulnerabilità ha immediatamente attirato l’attenzione degli specialisti della sicurezza delle informazioni, poiché potenzialmente rappresenta una seria minaccia per molte applicazioni web. Data la somiglianza con il troppo pubblicizzato Log4Shell, la nuova vulnerabilità è stata chiamata Spring4Shell.
I creatori del framework VMware Spring hanno già rilasciato delle patch per correggere le applicazioni vulnerabili, quindi si consiglia a tutte le aziende che utilizzano le versioni 5.3 e 5.2 di Spring Framework di aggiornare immediatamente alle versioni 5.3.18 o 5.2.20.
Cos’è Spring4Shell e perché questa vulnerabilità è così pericolosa?
La vulnerabilità appartiene alla classe RCE, cioè permette ad un attaccante di eseguire codice dannoso da remoto. Al momento, secondo il calcolatore CVSS v3.0, la sua gravità è 9,8 su 10. La vulnerabilità colpisce le applicazioni Spring MVC e Spring WebFlux in esecuzione sotto Java Development Kit versione 9 o successiva.
I ricercatori hanno segnalato la vulnerabilità scoperta a VMware martedì sera, ma già mercoledì è stato pubblicato su GitHub un proof of concept per la vulnerabilità. Il PoC è stato rapidamente rimosso, ma non prima che fosse notato da esperti di sicurezza (alcuni dei quali hanno confermato la pericolosità della vulnerabilità). Ed è molto improbabile che un exploit così potente sia passato inosservato ai criminali informatici.
Il framework Spring è abbastanza popolare tra gli sviluppatori Java, il che significa che potenzialmente molte applicazioni potrebbero essere vulnerabili. Secondo un post di Bleeping Computer, le applicazioni Java vulnerabili a Spring4Shell potrebbero diventare una causa di compromissione per un enorme numero di server. Inoltre, secondo lo stesso post, la vulnerabilità è già attivamente sfruttata in natura.
Maggiori dettagli tecnici, insieme agli indicatori di compromissione per gli exploit Spring4Shell possono essere trovati in un post sul blog di Securelist. C’è anche una descrizione di un’altra vulnerabilità critica nel framework Spring Java (CVE-2022-22963) nello stesso post.
Condizioni per sfruttare una vulnerabilità di Spring4Shell
L’unico metodo di sfruttamento di Spring4Shell conosciuto al momento della pubblicazione richiede una specifica confluenza di circostanze. Affinché l’exploit abbia successo, i seguenti componenti dovrebbero essere utilizzati sul lato interessato:
- Java Development Kit versione 9 o successiva;
- Apache Tomcat come contenitore di servlet;
- Formato di file WAR (Web Application Resource) invece del JAR predefinito;
- Dipendenze da spring-webmvc o spring-webflux;
- Versioni del framework Spring da 5.3.0 a 5.3.17, da 5.2.0 a 5.2.19, o più vecchie.
Tuttavia, è molto probabile che ci siano altre opzioni di sfruttamento ancora sconosciute e che la stessa vulnerabilità possa essere sfruttata in qualche altro modo.
Come proteggersi da Spring4Shell
Il consiglio principale per chiunque usi il framework Spring è di aggiornare alle versioni sicure 5.3.18 o 5.2.20.
L’Apache Software Foundation ha anche rilasciato versioni con patch di Apache Tomcat 10.0.20, 9.0.62 e 8.5.78, in cui il vettore di attacco è terminato sul lato Tomcat.
Gli sviluppatori di Spring hanno anche rilasciato versioni corrette delle estensioni Spring Boot 2.5.12 e 2.6.6 che dipendono dalla versione corretta di Spring Framework 5.3.18.
Se per qualche motivo non potete aggiornare il software di cui sopra, allora dovreste usare uno dei workaround pubblicati sul sito ufficiale di Spring.
Per minimizzare il rischio di un attacco riuscito vi consigliamo di proteggere tutti i server, così come tutti gli altri dispositivi che sono connessi a Internet, con una soluzione di sicurezza affidabile. Se usate i prodotti di sicurezza Kaspersky, assicuratevi che i moduli Advanced Exploit Prevention e Network Attack Blocker siano abilitati.