Encuentra y corrige rápidamente el exploit Log4Shell con Snyk

Ariel Ornstein
13 de diciembre de 2021
10 minutos de lecturaNota del editor(28 de diciembre de 2021 a las 19:35 GMT):El equipo de Log4j publicó una nueva actualización de seguridad que encontró que 2.17.0 es vulnerable a la ejecución remota de código, identificada por CVE-2021-44832. Recomendamos actualizar a la última versión, que en este momento es la 2.17.1. Lee más aquí.
Nota del editor(18 de diciembre de 2021 a las 18:55 GMT):La situación de Log4j cambia rápidamente y estamos actualizando nuestros blogs a medida que se dispone de nueva información. Se recomienda actualizar a la versión 2.17.1
o posterior. Esta versión contiene 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) y la última vulnerabilidad DoS corregida en 2.17.1 (CVE-2021-45105). Lee más aquí.
Aunque te hayas esforzado MUCHO por disfrutar de un fin de semana tranquilo, lo más probable es que este plan se haya visto interrumpido al menos una vez por la nueva vulnerabilidad de día cero Log4Shell que se dio a conocer el viernes (10 de diciembre de 2021).
La nueva vulnerabilidad se encontró en la biblioteca de Java de código abierto log4j-core
, que es un componente de uno de los marcos de registro de Java más populares, Log4J. Se le asignó CVE-2021-44228, categorizada como crítica con una puntuación CVSS de 10, y con un nivel de exploit maduro, ya que existe evidencia clara de que se está explotando en el mundo real.
Todas las versiones desde la 2.0-beta9 hasta la 2.14.1 están afectadas por la nueva vulnerabilidad, que se corrige en la última versión (2.16.0), publicada el mismo día de la divulgación.
Snyk agregó rápidamente la nueva vulnerabilidad a la Base de datos de vulnerabilidades e inteligencia de Snyk a fin de que los clientes, socios y la comunidad en general la utilicen para escanear sus aplicaciones y contenedores JVM y para aplicar una corrección urgente a esta vulnerabilidad utilizando Snyk Open Source y Snyk Container.
Cómo puede ayudarte Snyk a encontrar y reparar Log4Shell
Una de las primeras preguntas que se hace la mayoría de la gente es: ¿Cuál es mi nivel de exposición a esta vulnerabilidad?
El uso de Snyk te ayuda a responder a esta pregunta mostrándote si estás usando las versiones vulnerables del paquete y dónde se están usando. Snyk también te ayuda a corregirlas en todo el SDLC.
Vamos a mostrarte cómo utilizar Snyk para averiguar si eres vulnerable a Log4Shell, ya sea en el momento de la codificación, a través de nuestras integraciones SCM, o con alertas a través de nuestro servicio de supervisión continua. También te mostraremos cómo utilizar nuestro servicio de elaboración de informes y API para hacerlo a escala.
Comando de Snyk CLI para código no gestionado y no declarado: snyk log4shell
Snyk CLI tiene un nuevo comando diseñado para hacer una sola cosa: encontrar rastros de la biblioteca Log4j afectada por la vulnerabilidad Log4Shell. snyk log4shell
prueba tu proyecto Java construido y encuentra rastros de la biblioteca vulnerable incluso si no está declarada en los archivos de manifiesto. Obtén información sobre snyk log4shell
y cómo usarlo en tus proyectos.
Detectar la vulnerabilidad de Log4shell en el momento de la codificación
Para encontrar la vulnerabilidad lo antes posible, los desarrolladores pueden utilizar nuestros complementos del IDE y nuestra CLI, que son gratuitos para empezar. Los resultados del escaneo incluirán todas las vulnerabilidades que encontró Snyk, y para cada vulnerabilidad, cómo se presentó en la aplicación (ya sea como dependencia directa o indirecta) con instrucciones claras sobre cómo corregirlas.

La Snyk CLI (asegúrate de usar la última versión, v1.792.0) muestra un mensaje de advertencia especial para garantizar que la vulnerabilidad, si se identifica, reciba una visibilidad extra (para ver instrucciones sobre la instalación y actualización de la Snyk CLI, consulta nuestra documentación):

Escanear en busca de log4j-core agregado como jar
Si no utilizas un gestor de paquetes (por ejemplo, Maven), Snyk también puede detectar la vulnerabilidad en archivos jar. Para ello, basta con ejecutar el comando snyk test --scan-all-unmanaged
para escanear todos los archivos jar de la carpeta actual (también funciona con el comando sn
yk monitor
para una supervisión continua del proyecto).

Pruebas en busca de vulnerabilidades Log4j en tus proyectos con las integraciones SCM de Snyk
En unos pocos clics, puedes importar todos tus proyectos compatibles con Snyk, probarlos en busca de vulnerabilidades de código abierto y obtener información inmediata sobre ellos, lo que incluye qué vulnerabilidades tienes, cómo ingresaron y cómo corregirlas:


Snyk proporciona una gran cantidad de información sobre las vulnerabilidades identificadas, lo que es fundamental para comprender cómo corregir la vulnerabilidad y cómo priorizar las vulnerabilidades en función de cuáles requieren atención más inmediata que otras.
La Priority Score (puntuación de prioridad) de Snyk se calcula a partir de una lista de diversas señales, como si la vulnerabilidad tiene un exploit en el mundo real, si hay una solución disponible, o incluso si es tendencia en Twitter. Esta puntuación puede utilizarse para examinar rápidamente la lista de vulnerabilidades y priorizar las correcciones en consecuencia. En el caso de Log4Shell, la puntuación de prioridad es comprensiblemente alta, como se explica al pasar el cursor sobre la puntuación.
El árbol de dependencias del proyecto te ayuda a entender exactamente cómo ingresó una vulnerabilidad en una aplicación, ya sea directamente o como dependencia indirecta:

Supervisión continua 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 probó automáticamente como parte de nuestro ciclo diario de pruebas (a menos que se hubiera cambiado la configuración por defecto). Si tienes activadas nuestras notificaciones, ya deberías haber recibido una notificación informándote si se encontró la vulnerabilidad en uno de tus proyectos.
Solicitud automática de cambios o de fusión por combinación para corregir log4shell
Si Snyk ya supervisaba el repositorio antes de que se revelara la nueva vulnerabilidad, Snyk ya activó automáticamente una solicitud de cambios/de fusión por combinación para corrección que actualiza log4j-core
a una versión no vulnerable.

Si se trata de una nueva importación o si no activaste las solicitudes de cambios de corrección automáticas, puedes crear la solicitud de cambios de corrección manualmente desde la página del proyecto.

Detectar y corregir Log4Shell en todos los servicios de la empresa
Si eres un cliente con acceso a nuestra API y nuestro servicio de elaboración de informes, estas son excelentes maneras de ayudarte a obtener un panorama de dónde se está utilizando la dependencia log4j-core
en todos tus proyectos de código abierto supervisados.
Uso de los informes de Snyk para encontrar proyectos que utilizan log4j-core
Puedes utilizar la lista de materiales de Snyk (que se encuentra en la pestaña de dependencias de los informes a nivel de grupo y organización) para buscar dónde se utiliza log4j-core
. Abre el filtro Dependencies (Dependencias) y empieza a escribir el nombre de la dependencia (log4j-core
); luego, selecciónalo para refinar los resultados a solo este paquete. Si no ves ningún resultado, eso indicaría que no tienes esta dependencia en los proyectos que estás supervisando con Snyk.

Si encuentras la dependencia, podrás ver exactamente dónde se utiliza. Haz clic en el vínculo Projects (Proyectos), y se mostrará una lista de todos los proyectos que utilizan log4j-core
como dependencia. A continuación, puedes hacer clic en el propio proyecto, donde encontrarás las instrucciones de corrección y, si hay una ruta de actualización, te permitirá abrir una solicitud de cambios o de fusión por combinación para corrección.

Uso de la API de Snyk para encontrar proyectos que utilicen log4j-core
También puedes usar nuestra API para encontrar dónde estás usando la dependencia log4j-core
. Nuestro endpoint Depndencies by organization (Dependencias por organización) te permite listar todas las dependencias utilizadas y obtener resultados sobre dónde se utilizan. Hay múltiples filtros, como el lenguaje (uno relevante sería Java en este caso), la gravedad, etc., que puedes utilizar para acotar los resultados que obtendrás. Utiliza nuestro endpoint List all organizations in a group (Listar todas las organizaciones de un grupo) si tienes un grupo con varias organizaciones y quieres ejecutar un bucle a través de todas ellas.

Como parte de la respuesta, verás una lista de todos los proyectos que contienen el paquete en cuestión. Desde aquí, puedes utilizar la interfaz de usuario para examinar los proyectos y corregir las vulnerabilidades u obtener instrucciones para corregirlas utilizando otras API.
¡Deja que Snyk te ayude!
Empezar a utilizar Snyk es gratis, rápido y sencillo. Únete a nosotros hoy y te ayudaremos a encontrar dónde estás utilizando el paquete log4j-core
vulnerable (y más), y te ayudaremos a solucionarlo fácilmente para que puedas volver a tu fin de semana.
Introducción a Capture the flag
Aprende a resolver los desafíos de Capture the flag viendo nuestro taller virtual 101 bajo demanda.