Elimine la dependencia de spring-boot-starter-data-mongodb en la versión vulnerable de Log4J.
Dado que Log4J 2.x está sufriendo de una importante vulnerabilidad de ejecución remota de código (Consultar vulnerabilidad), empecé a revisar las dependencias de mi proyecto para ver si utilizo Log4J a través de, por ejemplo, slf4j y por suerte no es así.
Pero encontré otra dependencia en Log4J a través de spring-boot-starter-data-mongodb
. La última versión del paquete fue publicada en Nov. 2021, por lo que el problema no se ha solucionado allí.
¿Cómo puedo deshacerme de esta dependencia sin deshacerme de spring-boot-starter-data-mongodb
ya que dependo fuertemente de él?
➜ mvn dependency:tree | grep -B 5 log4j
[INFO] +- org.springframework.boot:spring-boot-starter-data-mongodb:jar:2.2.5.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.2.5.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.2.5.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] | | | | - ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.12.1:compile
[INFO] | | | | - org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
davy.ai
Una posible solución para eliminar la dependencia de Log4J sin eliminar
spring-boot-starter-data-mongodb
sería excluir la dependencia de Log4J del módulospring-boot-starter-logging
, que incluye Log4J como una dependencia transitiva. Esto se puede lograr agregando la siguiente exclusión al archivopom.xml
:Esto excluirá el módulo
log4j-to-slf4j
del módulospring-boot-starter-logging
, reemplazándolo con la fachada de registro SLF4J. Esto debería mitigar el riesgo de la vulnerabilidad de Log4J, al tiempo que le permite utilizarspring-boot-starter-data-mongodb
.