Actualicé mi dependencia de log4j-core a 2.15.0 para evitar cualquier ataque potencial de Log4Shell. Dicho esto, no pude actualizar la dependencia indirecta log4j de slf4j-log4j12 de 1.2.17 ya que la última versión estable de slf4j-log4j12 aún depende de log4j 1.2.17. Esto todavía deja mi aplicación web vulnerable a CVE-2019-17571 si no me equivoco. Entonces, leyendo sobre posibles estrategias de mitigación, encontré este artículo que recomienda:
evitar que el puerto de socket habilitado por la clase SocketServer en Log4j se abra a la red pública
¿Podría alguien explicarme cómo se puede lograr esto y si esta solución sería suficiente?
Solo los servidores que reciben mensajes de otros servidores son vulnerables a CVE-2019-17571 . Básicamente, la única forma de activar la vulnerabilidad es ejecutar:
java -jar log4j.jar org.apache.log4j.net.SocketServer <port> <config.properties> <log/directory>o haciendo el equivalente en código. Por lo tanto, la mayoría de los usuarios de Log4j 1.2 no son vulnerables.
En su caso, sin embargo, solo necesita reemplazar el slf4j-log4j12 con su equivalente Log4j 2.x ( log4j-slf4j-impl ) y puede eliminar Log4j 1.2 por completo.
Editar : sin embargo, si quiere estar seguro de que nadie usará la biblioteca como se indica arriba, puede eliminar la clase. Considerando también CVE-2021-4104 este importe a:
zip -d log4j.jar org/apache/log4j/net/SocketServer.class zip -d log4j.jar org/apache/log4j/net/JMSAppender.class