La vulnerabilidad CVE-2021-44228 ‘Log4Shell’ o ‘LogJam’ tiene graves consecuencias sobre el componente de Apache log4j incluido en millones de aplicaciones, servidores incluso en entornos OT.
CVE-2021-44228 ‘Log4Shell’ o ‘LogJam’, aplica a las características JNDI (Java Naming and Directory Interface), indicando que su componente vulnerable log4j afecta a millones de aplicaciones y servidores. Log4j es utilizado en la configuración, los mensajes de registro y los parámetros que no ofrecen protección contra el acceso a servicios de directorio remoto y otros puntos finales.
Cada vez que una aplicación con el módulo log4j vulnerable genera una traza de auditoría, por ejemplo, cuando se guarda un log de la navegación de un usuario o de un intento de login, se ejecuta el código vulnerable, esto fue descubierto por Chen Zhaojun del equipo de seguridad Alibaba Cloud Security Team, y ha recibido una puntuación CVSS de 10 sobre 10 debido a su gravedad y facilidad de explotación.
Las versiones afectadas de Apache Log4j son las comprendidas entre la 2.0-beta9 y la 2.14.1, ambas incluidas. Apache Software Foundation ha publicado soluciones para contener la vulnerabilidad en la versión 2.15.0 y posteriores.
Esta vulnerabilidad puede afectar a entornos OT ya que es independiente del proveedor y afecta tanto al software propietario como al de código abierto, dejando muchas industrias expuestas a la explotación remota, incluidas las eléctricas, la cadena de suministros, el transporte y demás. Log4j se encuentra en repositorios más populares de código abierto utilizados en numerosas aplicaciones industriales, como Object Linking and Embedding for Process Control (OPC) Foundation's Unified Architecture (UA) Java Legacy. Además, los adversarios pueden aprovechar esta vulnerabilidad en los sistemas de control de supervisión y adquisición de datos (SCADA) y los sistemas de gestión de energía (EMS) que utilizan Java en su base de código.
TTP’s para CVE-2021-44228
El vector de ataque (LDAP) ha sido el principal foco de los atacantes, aunque no se descarta que aparezcan otras técnicas.
En el caso de las redes OT, contar con una buena segmentación disminuye el riesgo, aunque seguirá estando presente hasta que se corrija en las versiones vulnerables. Sin embargo, los elementos OT como SCADA / EMS configurados para acceso remoto pueden utilizar LDAP para la administración de contraseñas y, por lo tanto, ser vulnerables a la explotación, particularmente por parte de un adversario que se mueva lateralmente dentro de una red con segmentación débil.
La aparición de cargas útiles anidadas y ofuscadas para evitar los firewalls de aplicaciones web es un ejemplo de las primeras tácticas, técnicas y procedimientos (TTP) del adversario.
El vector de ataque es mediante JNDI el cual permite a los atacantes proporcionar una URL que defina tanto el protocolo como el recurso a consultar:
De modo que, si un atacante pudiese levantar su propio servidor, desde donde se reciban las llamadas anteriores, podría realizar ataques de JNDI.
Recomendaciones
Actualizar la biblioteca a la versión Apache Log4j 2.15.0 o posterior para solucionar el fallo de seguridad generado por la vulnerabilidad. Si no es posible aplicar los parches de seguridad, se recomiendan las siguientes contramedidas para mitigar el problema:
- En versiones 2.10 hasta 2.14.1 se recomienda establecer el parámetro log4j2.formatMsgNoLookups o la variable de entorno LOG4J_FORMAT_MSG_NO_LOOKUPS en verdadero (true).
- En versiones inferiores a la 2.10 y hasta la 2.0-beta9, eliminar la clase JndiLookup de la ruta de clases (mediante el comando zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class )
- Revisar filtrado de salida en el perímetro (RCE necesita 1 o 2 conexiones salientes de la víctima, DNS aparte) y la configuración de proxy de JVM
CVE-2021-45046 afecta a todas las versiones. El parcheado incompleto de CVE-2021-44228 permite a atacantes realizar un ataque de denegación de servicio. Se podría aprovechar el parcheado incompleto de CVE-2021-44228 para "crear datos de entrada maliciosos utilizando un patrón de búsqueda JNDI que acabe en un ataque de denegación de servicio (DoS)".
Por Nacho García Egea