Debido a la vulnerabilidad de Log4Shell , me gustaría buscar y saber si mi proyecto Java está implementando Log4j directamente o por dependencias, y qué versión.
Tengo, por ejemplo, proyectos con estas herramientas de gestión de dependencias:
¿Cómo puedo hacer esto en este tipo de herramientas de administración de dependencias?
Detalles sobre la vulnerabilidad (incluidos los pasos de mitigación):
Puede ejecutar el árbol de dependencias de Maven desde la línea de comando dentro de su proyecto:
mvn dependency:tree En la salida, haga una búsqueda de log4j . Si lo encuentra, podría significar que su proyecto incluye directamente log4j u otra dependencia incluye log4j como una dependencia transitiva.
Hasta ahora estoy satisfecho con lo que ofrecen Syft y Grype . Estas herramientas enumeran todas las dependencias de código de una imagen Docker determinada o un directorio que contiene código, ¡independientemente de la pila! Fácil configuración y rápida ejecución.
Sin embargo, es independiente de Java y más genérico que su pregunta específica para una solución basada en Maven. Así que depende de ti si es útil o no.
Si usa Maven y Linux, puede ejecutar:
mvn dependency:tree | grep log4jEsto verificará sus dependencias y mostrará resultados solo si tiene Log4j como dependencia.
Y si es una dependencia transitiva, y desea verificar la dependencia de la que proviene, puede usar:
mvn dependency: tree | grep -B20 log4jMostrará 20 líneas antes de Log4j en la pantalla. Si aún no puede ver la dependencia principal de donde proviene, puede aumentar de 20 a 50, y así sucesivamente hasta encontrarla.
KKKK