如何在 Maven 构建期间 remove/exclude Log4j?
How to remove/exclude Log4j during maven build?
您好,由于 log4j 2.10 或更高版本中的漏洞问题,我们需要在我们的应用程序之一中删除上述 jar 文件。我已经在我的 pom.xml 中尝试过,但遇到了一些错误。我在构建 maven 项目方面没有太多经验:(
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<name>assistant</name>
<description>Assistant</description>
<groupId>com.assistant</groupId>
<artifactId>assistant</artifactId>
<packaging>war</packaging>
<version>2.0.2</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>5.7.2</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- WORDPRESS DEPENDENCIES START-->
<dependency>
<groupId>org.kamranzafar.spring.wpapi</groupId>
<artifactId>spring-wpapi-client</artifactId>
<version>0.1</version>
</dependency>
<!-- WORDPRESS DEPENDENCIES END -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
这是标记中的错误
非常感谢您的帮助
首先简要概述一下 log4j 最近的漏洞。
- Log4J 2.15.0存在严重漏洞CVE-2021-44228(远程代码执行)
- Log4J 2.16.0存在严重漏洞CVE-2021-44228(远程代码执行)
- Log4J 2.16.0 也存在漏洞 CVE-2021-45105(DoS 漏洞)
- 编辑: log4j-api-2.17.0 和上存在 CVE-2021-44832 漏洞
log4j-to-slf4j-2.17.0 上的 CVE-2021-44832 漏洞。但是这2
漏洞并不严重。还是建议升级
到 2.17.1
建议升级到2.17.0以上版本.
此版本 (2.17.0) 包含针对两个远程代码执行漏洞(最新的 DoS 漏洞)的安全修复程序。
您正在使用 spring-boot-starter-web。
因此,升级到 log4j 2.17.1 的一个好方法是通过 spring 启动依赖管理。只需覆盖 pom.xml 属性部分中的 log4j 版本(无需在插件或依赖项部分中执行任何操作):
<properties>
<java.version>1.8</java.version>
<log4j2.version>2.17.1</log4j2.version>
</properties>
https://snyk.io/blog/log4j-2-15-vulnerability-cve-2021-45046-critical-ace/
如果您真的只想排除 log4j 依赖项(这样您可能不会丢失所有日志记录功能,除非您用另一个日志记录框架替换 log4j):
执行 maven 命令mvn dependency:tree
这将显示 Maven 依赖层次结构。所以你只需要
排除不需要的依赖项。例如:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>log4j-to-slf4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
...
</dependencies>
您好,由于 log4j 2.10 或更高版本中的漏洞问题,我们需要在我们的应用程序之一中删除上述 jar 文件。我已经在我的 pom.xml 中尝试过,但遇到了一些错误。我在构建 maven 项目方面没有太多经验:(
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<name>assistant</name>
<description>Assistant</description>
<groupId>com.assistant</groupId>
<artifactId>assistant</artifactId>
<packaging>war</packaging>
<version>2.0.2</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>5.7.2</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- WORDPRESS DEPENDENCIES START-->
<dependency>
<groupId>org.kamranzafar.spring.wpapi</groupId>
<artifactId>spring-wpapi-client</artifactId>
<version>0.1</version>
</dependency>
<!-- WORDPRESS DEPENDENCIES END -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
这是标记中的错误
非常感谢您的帮助
首先简要概述一下 log4j 最近的漏洞。
- Log4J 2.15.0存在严重漏洞CVE-2021-44228(远程代码执行)
- Log4J 2.16.0存在严重漏洞CVE-2021-44228(远程代码执行)
- Log4J 2.16.0 也存在漏洞 CVE-2021-45105(DoS 漏洞)
- 编辑: log4j-api-2.17.0 和上存在 CVE-2021-44832 漏洞 log4j-to-slf4j-2.17.0 上的 CVE-2021-44832 漏洞。但是这2 漏洞并不严重。还是建议升级 到 2.17.1
建议升级到2.17.0以上版本.
此版本 (2.17.0) 包含针对两个远程代码执行漏洞(最新的 DoS 漏洞)的安全修复程序。
您正在使用 spring-boot-starter-web。 因此,升级到 log4j 2.17.1 的一个好方法是通过 spring 启动依赖管理。只需覆盖 pom.xml 属性部分中的 log4j 版本(无需在插件或依赖项部分中执行任何操作):
<properties>
<java.version>1.8</java.version>
<log4j2.version>2.17.1</log4j2.version>
</properties>
https://snyk.io/blog/log4j-2-15-vulnerability-cve-2021-45046-critical-ace/
如果您真的只想排除 log4j 依赖项(这样您可能不会丢失所有日志记录功能,除非您用另一个日志记录框架替换 log4j):
执行 maven 命令
mvn dependency:tree
这将显示 Maven 依赖层次结构。所以你只需要 排除不需要的依赖项。例如:
<dependencies> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <artifactId>log4j-to-slf4j</artifactId> <groupId>org.apache.logging.log4j</groupId> </exclusion> </exclusions> </dependency> ... </dependencies>