SpringShell: due nuove vulnerabilità critiche

Due nuove falle a un framework Java open source preoccupano, ma ci sono già gli aggiornamenti che mettono al riparo dagli attacchi.

Business Vulnerabilità

Per qualche ora nel fine settimana si è ripresentato lo spettro di Log4Shell. Non per gli attacchi che continuano a sfruttare questa vulnerabilità, ma perché sono state scoperte due vulnerabilità critiche che interessano il popolare framework Java open source Spring. L’analogia con l’open source ha portato a soprannominare le falle, che ufficialmente sono monitorate con le sigle CVE-2022-22965 e CVE-2022-22963, Spring4Shell o SpringShell, anche se è bene chiarire che non esiste un legame con la famigerata Log4Shell.

Il problema risiede in due prodotti: Spring MVC e Spring WebFlux, che consentono agli sviluppatori di scrivere e testare app. Sono dovute alle modifiche introdotte in JDK9, che hanno riportato alla luce una vulnerabilità vecchia di dieci anni, che era tracciata come CVE-2010-1622. Data l'abbondanza di sistemi che combinano il framework Spring e JDK9, e il fatto che il codice exploit sia già in circolazione, hanno fatto lievitare la preoccupazione.

La criticità è data dal fatto che sfruttando queste falle un attaccante può eseguire codice arbitrario su un server Web remoto. I ricercatori di Kaspersky spiegano che SpringShell sfrutta la funzionalità di associazione dati di Spring per associare a determinati oggetti utilizzati da un'applicazione i dati archiviati all'interno di una richiesta HTTP.


Il bug è nel metodo getCachedIntrospectionResults, che può essere utilizzato per ottenere l'accesso non autorizzato a tali oggetti, trasferendo i nomi delle classi tramite una richiesta HTTP. Quando vengono utilizzate classi di oggetti speciali, si verifica un data leak, oltre a consentire l’esecuzione di codice remoto. La configurazione vulnerabile è costituita da JDK versione 9+, Apache Tomcat, Spring Framework nelle release da 5.3.0 a 5.3.17 e da 5.2.0 a 5.2.19, e versioni precedenti.

La preoccupazione è parzialmente rientrata quando si è appreso che l’exploit funziona solo quando un'app sviluppata da Spring viene eseguita su Apache Tomcat, e solo quando l'app viene come un tipo di file noto come WAR, abbreviazione di archivio web. Se l'applicazione viene distribuita come jar eseguibile, ossia come da impostazione predefinita, non è vulnerabile all'exploit. Tuttavia, precisano i manutentori di Spring, “la natura della vulnerabilità è più generale e potrebbero esserci altri modi per sfruttarla".

Quanto alla CVE-2022-22963, si tratta di una vulnerabilità nella funzionalità di routing di Spring Cloud che consente l'iniezione di codice tramite Spring Expression Language (SpEL), aggiungendo una speciale intestazione spring.cloud.function.routing-expression a una richiesta HTTP. SpEL è un linguaggio creato per Spring Framework che supporta le query e la gestione degli object graph in fase di esecuzione. Questa vulnerabilità può essere utilizzata anche per l'esecuzione di codice in modalità remota. Sono vulnerabili le release di Spring Cloud Function 3.1.6, 3.2.2 e precedenti.

Entrambe le vulnerabilità sono potenzialmente gravi e non dovrebbero essere sottovalutate. Per mettersi al riparo è necessario aggiornare Spring Framework alla release 5.3.18 o 5.2.20 e, per eccesso di cautela, aggiornare anche Tomcat alla release 10.0.20, 9.0.62 o 8.5.78. Anche Spring Cloud dovrebbe essere aggiornata alle versioni 3.1.7 o 3.2.3.

Kaspersky ha pubblicato anche gli Indicatori di Compromissione e il link al sito web di VMware per maggiori dettagli.

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con le notizie di SecurityOpenLab.it iscriviti alla nostra Newsletter gratuita.

Notizie correlate

Iscriviti alla nostra newsletter

Soluzioni B2B per il Mercato delle Imprese e per la Pubblica Amministrazione

Iscriviti alla newsletter