saverioriotto.it

Spring4Shell: vulnerabilità zero-day nel framework Spring Core Java

La nuova vulnerabilità zero-day su Spring4Shell consente l'esecuzione di codice in modalità remota e i suoi dettagli sono già trapelati pubblicamente

Spring4Shell: vulnerabilità zero-day nel framework Spring Core Java

È stata rilevata una nuova vulnerabilità nel framework Spring Core Java, che è un framework applicativo popolare per lo sviluppo di applicazioni Java con funzionalità enterprise. Questa vulnerabilità non ha ancora CVE, sebbene sia confusa con la vulnerabilità della funzione Spring Cloud apparsa il 29 marzo, che può essere tracciata come CVE-2022-22963. 

La vulnerabilità di Spring4Shell è causata da una deserializzazione non sicura degli argomenti passati. Non influisce sulle configurazioni predefinite; si basa su alcune configurazioni specifiche per lo sfruttamento. Il difetto riguarda le funzioni che utilizzano l'annotazione RequestMapping e i parametri POJO. Richiede un endpoint con DataBinder abilitato e dipende fortemente dal servlet container dell'applicazione.

Alcune delle società di sicurezza confermano che tutte le versioni del framework Spring da almeno 4.3.0 a 5.3.15 sono interessate da questo bug. Al momento, non è disponibile alcuna patch per la vulnerabilità. Alcuni ricercatori di sicurezza avvisano che è possibile mitigare il problema profilando le applicazioni basate su Spring interessate su soluzioni di firewall per applicazioni Web. D'altra parte, Praetorian suggerisce di utilizzare la funzione ControllerAdvice di DataBinder per non consentire schemi pericolosi con la lista denylist fornendo anche uno snippet di esempio, che vediamo di seguito:

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;

@ControllerAdvice
@Order(10000)
public class BinderControllerAdvice {
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
     String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
     dataBinder.setDisallowedFields(denylist);
   }
}

È questo il nuovo Log4Shell?

Spring è un framework applicativo molto popolare per le applicazioni Java, che solleva notevoli preoccupazioni sul fatto che ciò possa portare diversi attacchi, considerando la grande presenza di applicazioni ancora vulnerabili. Poiché lo sfruttamento richiede un semplice HTTP POST a un'app vulnerabile, gli attori delle minacce saranno in grado di creare script che scansionano il web sfruttando automaticamente i server vulnerabili rilevati.

Possono utilizzare questi exploit per eseguire comandi sul server, il che consentirà l'accesso remoto completo al dispositivo.

Questo scenario di attacco ricorda quello che abbiamo visto a dicembre con lo sfruttamento di massa dei server Log4j utilizzando gli exploit Log4Shell per installare malware e condurre attacchi ransomware.

A causa dei requisiti per sfruttare questo bug, è troppo presto per dire quante applicazioni sono vulnerabili. Per evitare che questo scenario si realizzi, si consiglia vivamente all'amministratore di applicare le mitigazioni fornite da Praetorian il prima possibile se ritengono che le loro app siano vulnerabili.




Commenti
* Obbligatorio