发现 log4j2 <= 2.14.1 存在严重的安全漏洞(参见 https://nvd.nist.gov/vuln/detail/CVE-2021-44228 )。如何更新 Spring Boot 应用程序的 pom.xml 以确保 log4j2 的所有(递归)用法都使用版本 2.15.0?
Maven pom.xml 中将 log4j2 的所有用法升级到 2.15.0 的最简单方法是什么,包括使用 log4j2 的依赖项?请参阅 CVE-2021-44228
答案:
这也会规定 spring-boot-starter-log4j2 的 log4j2 组件版本。
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>2.17.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
遵循@Piotr P. Karwasz 的建议,这是一个更好的设置选择。
更新:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.17.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
顺便说一下,如果项目的log4j依赖只来自spring-boot-starter-log4j2,有确定的设置方式,参考 spring blog
<properties>
<log4j2.version>2.17.0</log4j2.version>
</properties>
一般maven项目可以用deps mgmt强制log4j-core版本。
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
</dependency>
...
</dependencies>
</dependencyManagement>
在此之后,确保这个 pom.xml 和所有继承 pom.xml 确实定义了 log4j deps without tag
以便他们都将从这个集中的更改中受益。
根据 apache site ,Log4J的最低可接受级别现在 2.17.1 - 缓解措施是升级到log4j 2.3.2(对于Java 6),2.12.4(对于Java 7),(对于Java 7),,或2.17.1(对于Java 8及以后)。
### 更新:
2022/01/04:
2021/12/22:
2.17.0 修复 CVE-2021-45105
2.12.2 发布 (2021/12/14)
2.16.0 还修复了 CVE-2021-45046
操作:
spring-boot “默认”不受 CVE-2021-44228( log4shell ) 的影响。
虽然版本
[2 - 2.6.1]
(任何-starter
)依赖于log4j-api
和slf4j-to-log4j
,但 Slf4j says :为了确定,
在 maven 中检查以下输出:
在 gradle 中:
让
spring-boot-starter-log4j2
加入我们是
definitely affected
(spring-boot > 1)!要(通过)更新,最简单的可能是:
行家:
..在pom中。
*毕业:
...构建、测试、发布、部署。
链接: