Vulnerabilità di tipo “Remote Code Execution” in Apache Struts

23/08/2018

apache rce struts Vulnerabilità
Ieri l’Apache Software Foundation ha annunciato una vulnerabilità in Apache Struts, il noto framework open source per lo sviluppo di applicazioni Web nel linguaggio Java. La vulnerabilità in questione, identificata con il CVE-2018-11776, potrebbe consentire a un attaccante l’esecuzione di codice arbitrario nel contesto di una applicazione e una condizione di Denial of Service a seguito di ripetuti tentativi falliti. 
 
La scoperta della falla è stata comunicata al team di sicurezza di Apache Struts il 10 aprile 2018 ad opera di Man Yue Mo,  ricercatore del Semmle Security Research Team. In base a quanto riportato da Semmle, la vulnerabilità è insita nel codice principale di Apache Struts e non richiede l’utilizzo di plug-in aggiuntivi. Questa è causata dalla convalida insufficiente di dati utente non attendibili nel core del framework Struts e può essere sfruttata solo se:
  1. Il flag alwaysSelectFullNamespace è impostato su True nella configurazione Struts
  2. Il file di configurazione Struts dell’applicazione (o il codice Java, se si utilizza il plug-in Struts Convention) contiene un tag che non specifica l’attributo namespace opzionale o specifica nomi con caratteri speciali come jolly o slash (ad es. “/ *”).
 
Semmle ha riportato due diversi vettori di attacco non escludendone altri.
 
Esempio con vettore di attacco 1
 
Se nel file di configurazione struts.xml di Struts o nel codice Java (nel caso si utilizzi il plug-in Struts Convention) non viene dichiarato il namespace, si possono ottenere i seguenti tre tipi di risultati non sicuri:
 
– reindirizzamento del visitatore verso un URL;
– concatenazione di azioni;
postback, ovvero un http post alla stessa pagina della form.
 
In figura è illustrato un esempio del file di configurazione struts.xml potenzialmente vulnerabile: il tag non ha un attributo namespace e il risultato è di tipo redirectAction. 
 
 
Esempio con vettore di attacco 2
 
L’applicazione web diventa vulnerabile se nella configurazione di Struts vengono utilizzati i tag url all’interno di un tag senza attributo namespace come ad esempio: 
 
Oppure se si utilizza un tag senza l’attributo action o value. 
 
 
Si sollecitano le organizzazioni e gli sviluppatori che usano Struts ad effettuare gli aggiornamenti in quanto, tale vulnerabilità è molto simile a quella che consentì la violazione di Equifax4, di cui si è già discusso nel bollettino del 27 marzo 2018.
 
Software interessato
 
Questa nuova vulnerabilità ha effetto su tutte le versioni supportate di Apache Struts, ad eccezione delle 2.3.35 e 2.5.17.
 
Soluzioni
 
Apache ha fornito gli aggiornamenti per le versioni interessate, pertanto si consiglia di aggiornare prima possibile alle versioni 2.3.35 e 2.5.17 che tra l’altro non prevedono problemi di retro-compatibilità.
 
Aggiornamento del 27 Agosto 2018
Un codice “Proof-of-Concept” è stato rilasciato nel repository GitHub e potrebbe consentire agli aggressori di sfruttare la vulnerabilità identificata di recente nel framework Apache Struts 2. Come già riportato, la vulnerabilità (CVE-2018-11776), identificata all’inizio di questa settimana, potrebbe consentire ad un avversario di eseguire codice remoto su sistemi affetti.
Il PoC è stato rilasciato insieme a uno script Python che consentirebbe di facilitare l’utilizzo del proof-of-concept.
 
Secondo alcune fonti, anche in vista del rilascio del PoC, è emerso un consistente interesse verso questa vulnerabilità soprattutto in forum underground cinesi e russi.
 
Per far fronte a possibili attacchi, automatizzati e non, si consiglia di provvedere tempestivamente all’aggiornamento del software.