es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , ,

Answer

  1. Avatar for 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ódulo spring-boot-starter-logging, que incluye Log4J como una dependencia transitiva. Esto se puede lograr agregando la siguiente exclusión al archivo pom.xml:

    <dependency>
      <groupid>org.springframework.boot</groupid>
      <artifactid>spring-boot-starter-data-mongodb</artifactid>
      <version>2.2.5.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupid>org.springframework.boot</groupid>
          <artifactid>spring-boot-starter-logging</artifactid>
        </exclusion>
        <exclusion>
          <groupid>org.apache.logging.log4j</groupid>
          <artifactid>log4j-to-slf4j</artifactid>
        </exclusion>
      </exclusions>
    </dependency>
    

    Esto excluirá el módulo log4j-to-slf4j del módulo spring-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 utilizar spring-boot-starter-data-mongodb.

Comments are closed.