Skip to main content

Encuentra y corrige rápidamente la vulnerabilidad Log4Shell con Snyk

Escrito por
Headshot of Ariel Ornstein

Ariel Ornstein

blog feature log4j vulnerability red

13 de diciembre de 2021

0 minutos de lectura

Nota del editor (28 de diciembre de 2021 a las 7:35 p. m. GMT): El equipo de Log4j publicó una nueva actualización de seguridad y determinó que la versión 2.17.0 era vulnerable a la ejecución remota de código, identificada como CVE-2021-44832. Recomendamos actualizar a la versión más reciente, que en este momento es la 2.17.1. Lee más aquí.

Nota del editor (18 de diciembre de 2021 a las 6:55 p. m. GMT): La situación de Log4j cambia rápidamente y actualizamos nuestros blogs a medida que hay nueva información disponible. Te recomendamos actualizar a la versión 2.17.1 o una posterior. Esta versión incluye correcciones de seguridad para dos vulnerabilidades de ejecución remota de código, corregidas en 2.15.0 (CVE-2021-44228) y 2.16.0 (CVE-2021-45046), además de la vulnerabilidad de denegación de servicio más reciente, corregida en la versión 2.17.1 (CVE-2021-45105). Lee más aquí.

Aunque hayas hecho todo lo posible por disfrutar de un fin de semana tranquilo, es probable que el nuevo día cero Log4Shell, divulgado el viernes 10 de diciembre de 2021, haya interrumpido tus planes al menos una vez.

La nueva vulnerabilidad se encontró en la biblioteca Java de código abierto log4j-core, que forma parte de uno de los frameworks de registro de Java más populares: Log4J. Se le asignó el identificador CVE-2021-44228, se clasificó como Crítica con una puntuación CVSS de 10 y se determinó que el exploit estaba en una etapa madura, ya que había pruebas claras de que se estaba explotando activamente.

La nueva vulnerabilidad afecta a todas las versiones desde la 2.0-beta9 hasta la 2.14.1. Se corrigió en la versión más reciente (2.16.0), publicada el mismo día en que se divulgó la vulnerabilidad. 

Snyk agregó rápidamente la nueva vulnerabilidad a la base de datos de vulnerabilidades Snyk Intel para que clientes, socios y la comunidad en general puedan analizar sus aplicaciones y contenedores JVM, y aplicar una corrección urgente a esta vulnerabilidad con Snyk Open Source y Snyk Container.

Cómo puede ayudarte Snyk a encontrar y corregir Log4Shell

Una de las primeras preguntas que se hará la mayoría es: ¿qué tan expuesto estoy a esta vulnerabilidad?

Snyk te ayuda a responder esta pregunta al mostrarte si usas versiones vulnerables del paquete y dónde se utilizan. También te ayuda a corregirlas en todo el ciclo de vida de desarrollo de software (SDLC).

Te mostraremos cómo usar Snyk para averiguar si eres vulnerable a Log4Shell, ya sea durante la programación, mediante nuestras integraciones de SCM o con alertas de nuestro servicio de monitoreo continuo. También te mostraremos cómo usar nuestros servicios de reportes y API para hacerlo a escala.

Comando de Snyk CLI para código no administrado y no declarado: snyk log4shell

Snyk CLI tiene un nuevo comando que hace una sola cosa: encontrar rastros de la biblioteca Log4j afectada por la vulnerabilidad Log4Shell. snyk log4shell analiza tu proyecto Java compilado y encuentra rastros de la biblioteca vulnerable, aunque no esté declarada en los archivos de manifiesto. Conoce snyk log4shell y descubre cómo usarlo en tus proyectos.

Encuentra la vulnerabilidad Log4Shell mientras programas

Para encontrar la vulnerabilidad lo más rápido posible, los desarrolladores pueden usar nuestros complementos para IDE y nuestra CLI, que son gratuitos para empezar. Los resultados del análisis incluyen todas las vulnerabilidades que encuentra Snyk y, para cada una, muestran cómo llegó a la aplicación (como dependencia directa o indirecta) junto con instrucciones claras para corregirla.

El plugin de Snyk para IntelliJ señala una vulnerabilidad de ejecución de código arbitrario en Log4j y muestra instrucciones para corregirla mediante la actualización a la versión 2.15.0.
Captura de pantalla del plugin de Snyk para IntelliJ, con instrucciones en línea para corregir la vulnerabilidad.

Snyk CLI (asegúrate de usar la versión más reciente, v1.792.0) muestra una advertencia especial para que la vulnerabilidad, si se identifica, tenga mayor visibilidad. Para obtener instrucciones sobre cómo instalar y actualizar Snyk CLI, consulta nuestra documentación:

Salida de la terminal de Snyk CLI que muestra dos vulnerabilidades de Log4j e instrucciones recomendadas para actualizar y corregirlas.
Encontrar vulnerabilidades con la CLI de Snyk y obtener instrucciones para corregirlas.

Análisis de log4j-core agregado como archivo JAR

Si no usas un administrador de paquetes (por ejemplo, Maven), Snyk también puede detectar la vulnerabilidad en archivos JAR. Para hacerlo, solo ejecuta el comando snyk test --scan-all-unmanaged a fin de analizar todos los archivos JAR de la carpeta actual (también funciona con el comando snyk monitor, para monitorear el proyecto de forma continua).

Terminal que muestra los resultados del análisis de dependencias de Snyk, con dos vulnerabilidades de Log4j y una actualización recomendada de la versión 2.14.1 a la 2.16.0.

Analiza tus proyectos para detectar vulnerabilidades de Log4j con las integraciones de SCM de Snyk

En unos pocos clics, puedes importar todos tus proyectos compatibles con Snyk, analizarlos para detectar vulnerabilidades de código abierto y obtener información inmediata, como qué vulnerabilidades tienes, cómo llegaron a tus proyectos y cómo corregirlas:

Interfaz del repositorio que muestra el proyecto arielorn-demos con los repositorios seleccionados, incluidos distributed-app, java-goof, goof, java-reachability-playground y
Informe de vulnerabilidad de Apache Log4j que muestra ejecución de código arbitrario, gravedad crítica, puntuación de 1000 y detalles de mitigación.

Snyk proporciona abundante información sobre las vulnerabilidades identificadas, lo que resulta fundamental para entender cómo corregirlas y priorizarlas según la urgencia con la que requieren atención.

La puntuación de prioridad de Snyk se calcula a partir de diversas señales, como si la vulnerabilidad se está explotando activamente, si hay una corrección disponible o incluso si es tendencia en Twitter. Después, puedes usar esta puntuación para revisar rápidamente la lista de vulnerabilidades y priorizar las correcciones en consecuencia. En el caso de Log4Shell, la puntuación de prioridad es, como era de esperarse, alta, tal como se explica al pasar el cursor sobre ella.

El árbol de dependencias del proyecto te ayuda a entender exactamente cómo llegó una vulnerabilidad a la aplicación, ya sea como dependencia directa o indirecta:

Árbol de dependencias filtrado para mostrar vulnerabilidades; se destaca org.apache.logging.log4j:log4j-core@2.3 entre las dependencias vulnerables de Java.

Monitoreo continuo para prevenir futuros casos de vulnerabilidades de Log4j

Si ya habías importado tus proyectos antes de que se divulgara la nueva vulnerabilidad, tu proyecto se analizó automáticamente como parte de nuestro ciclo de análisis diario (a menos que se haya cambiado la configuración predeterminada). Si tienes activadas las notificaciones, ya deberías haber recibido una para saber si se encontró la vulnerabilidad en alguno de tus proyectos.

Solicitud de extracción o combinación automática para corregir Log4Shell

Si Snyk ya monitoreaba tu repositorio antes de que se divulgara la nueva vulnerabilidad, ya habrá generado automáticamente una solicitud de extracción o combinación para actualizar log4j-core a una versión que no sea vulnerable.

pull request de Snyk que muestra la actualización de una dependencia de Maven que corrige la vulnerabilidad de ejecución remota de código de Log4j, de la versión 2.3 a la 2.15.0.

Si acabas de importar el proyecto o no activaste las solicitudes de corrección automáticas, puedes crear la solicitud de corrección manualmente desde la página del proyecto. 

Panel de vulnerabilidades que muestra un problema de ejecución arbitraria de código en Apache Log4j, de gravedad crítica, y un botón destacado «Corregir esta vulnerabilidad».

Detecta y corrige Log4Shell en todos los servicios de tu empresa

Si eres cliente y tienes acceso a nuestra API y al servicio de reportes, puedes usarlos para obtener una visión general de dónde se utiliza la dependencia log4j-core en todos tus proyectos de código abierto monitoreados.

Usa los reportes de Snyk para encontrar proyectos que usan log4j-core

Puedes usar la lista de materiales de Snyk (disponible en la pestaña de dependencias de los reportes de grupos y organizaciones) para buscar dónde se usa log4j-core. Abre el filtro Dependencias y comienza a escribir el nombre de la dependencia (log4j-core); selecciónala para filtrar los resultados y mostrar solo este paquete. Si no aparece ningún resultado, significa que esta dependencia no está en los proyectos que monitoreas con Snyk.

Pestaña de dependencias de Snyk Reports filtrada por «log4j», con org.apache.logging.log4j:log4j-core@2.3 seleccionado
Captura de pantalla de una búsqueda de `log4j-core` en la pestaña de dependencias de los informes de Snyk.

Si encuentras la dependencia, podrás ver exactamente dónde se usa. Haz clic en el enlace Proyectos para ver una lista de todos los proyectos que usan log4j-core como dependencia. Después, haz clic en el proyecto para ver las instrucciones de corrección y, si hay una ruta de actualización disponible, podrás abrir una solicitud de extracción o combinación para corregirlo.

Panel de proyectos de dependencias para org.apache.logging.log4j:log4j-core@2.3, con dos proyectos y sus fuentes de GitHub y CI/CLI, además de la cantidad de problemas.

Usa la API de Snyk para encontrar proyectos que usan log4j-core

También puedes usar nuestra API para encontrar dónde usas la dependencia log4j-core. El endpoint Dependencias por organización te permite enumerar todas las dependencias utilizadas y obtener resultados sobre dónde se usan. Puedes aplicar varios filtros para acotar los resultados, como el lenguaje de programación (en este caso, Java), la gravedad y otros. Si tienes un grupo con varias organizaciones y quieres recorrerlas todas, usa el endpoint Enumerar todas las organizaciones de un grupo.

Captura de código que muestra un registro JSON de Apache Log4j versión 2.3, con el recuento de problemas críticos y los proyectos Maven relacionados resaltados

La respuesta incluye una lista de todos los proyectos que contienen el paquete correspondiente. Desde aquí, puedes usar la interfaz para revisar los proyectos y corregir las vulnerabilidades, o bien obtener instrucciones de corrección mediante otras API.

¡Deja que Snyk te ayude!

Empezar a usar Snyk es gratis, rápido y fácil. Únete hoy y te ayudaremos a encontrar dónde usas el paquete vulnerable log4j-core (y más), y a corregirlo fácilmente para que puedas volver a disfrutar de tu fin de semana.

Comienza con Capture the Flag

Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.