Blog Akamai | Spring Cloud Function SpEL Injection (CVE-2022-22963) sfruttata a mani basse
Panoramica
Il 24 marzo 2022, Pivotal ha applicato una patch ad una vulnerabilità critica sul lato server (Spring Expression Language Injection) in Spring Cloud Function, che poteva potenzialmente condurre ad una violazione del sistema. Spring è il noto sistema open-source di Java. Questa vulnerabilità, insieme all'altra vulnerabilità registrata nell'esecuzione di codice remoto (RCE) (Spring Core o "Spring4Shell"), è stata mitigata dalla soluzione Akamai Adaptive Security Engine (ASE) e dai set di regole Kona Site Defender (KSD). Questo post si focalizza sulle vulnerabilità di Spring Cloud, mentre, per informazioni sulla vulnerabilità di Spring Core, è possibile leggere qui.
Spring Cloud Function è una tecnologia che consente di svincolare la logica aziendale da uno specifico runtime. Spring Expression Language (SpEL) è un potente linguaggio di programmazione, utilizzato nei prodotti Spring, che supporta l'esecuzione di query e la manipolazione di un grafico di oggetti durante il runtime. In passato, sono state segnalate molte CVE (Common Vulnerabilities and Exposures) nell'esecuzione di codice remoto su SpEL Injection quando l'applicazione valutava espressioni di codice di input dell'utente inaffidabili in modo non protetto (vedere Figura 1).
Alcuni giorni dopo, il 26 marzo, un utente di GitHub, "cckuailong", pubblicava un exploit proof-of-concept che mostrava come questa vulnerabilità era stata sfruttata in modo efficace (vedere Figura 2).
Meno di un anno dopo, Akamai ha iniziato ad osservare alcuni tentativi di sfruttamento su Internet.
Con Log4j, per molti (ma non tutti) degli attuali tentativi di sfruttamento viene eseguito il "ping back", mentre gli autori degli attacchi forzano l'applicazione a inviare un beacon in caso di sfruttamento riuscito.
Abbiamo osservato migliaia di indirizzi IP di tutto il mondo inviare payload di attacco, mentre la maggior parte sono reti VPN (Virtual Private Network) e proxy web gestiti su cloud pubblici.
La vulnerabilità
Dalla patch, si può vedere che un'espressione SpEL potrebbe essere ricevuta tramite l'intestazione HTTPspring.cloud.function.routing-expression" per facilitare il routing dell'applicazione.
Non c'era alcun controllo nel codice relativamente al fatto che l'espressione da valutare sarebbe stata ricevuta tramite un'intestazione. Per risolvere il problema, è stata aggiunta una stringa headerEvalContext come SimpleEvaluationContext .
Mitigazione con la soluzione KSD Adaptive Security Engine
L'Akamai Adaptive Security Engine (ASE) presenta estese regole incorporate per il rilevamento di Command Injections poiché l'obiettivo di molti di questi attacchi riguarda l'esecuzione di comandi a livello del sistema operativo. La soluzione ASE è riuscita a rilevare tempestivamente questa vulnerabilità con le regole Command Injection esistenti:
Anche i set di regole Kona Site Defender riescono a mitigare questi attacchi:
3000041 - Attacco Injection lato server
3000156 - Rilevato un attacco CMD Injection (funzioni PHP ad alto rischio)
Riepilogo
Anche se le tecnologie Spring Cloud Function non sono così diffuse come la libreria Log4j , la facilità di sfruttare questa vulnerabilità sarà allettante per molti criminali. Possiamo prevedere che ciò porterà molti di questi criminali a lanciare campagne per attacchi di crypto-mining, DDoS e ransomware: un'ottima opportunità per accedere alle organizzazioni nei prossimi anni. Tuttavia, i clienti Akamai sono protetti grazie alla soluzione Akamai Adaptive Security Engine e ai set di regole Kona Site Defender.
Il team addetto alla ricerca sulle minacce di Akamai continua a monitorare la capacità di sfruttamento di questa vulnerabilità, informando man mano che saranno rilevate nuove varianti o nuovi criminali che riusciranno ad aggiungere questa vulnerabilità al loro arsenale.