Log4j2漏洞和Lombok注释@log4j2

use*_*003 8 java spring lombok log4j2 spring-boot

我们使用 spring boot 2.1.5 和 starterparent 作为 pom 依赖项。

Spring boot 使用默认的 logback 进行日志记录,我们没有明确切换到 Log4j2 或更改任何配置。下面是我们的项目依赖树。

在此输入图像描述

我们的项目中有很多 lombok @log4j2 注释。但是,我们在依赖关系树中发现没有任何 log4j2-core jar 依赖关系(已发现该依赖关系容易受到 log4j 最近问题的影响)。

@Log4j2
@Service
@DependsOn("applicationDependencyCheck")
Run Code Online (Sandbox Code Playgroud)

lombok @log4j2 不依赖于 log4j2-core.jar 吗?假设这会出现在 Maven 依赖树中是否正确,或者我们是否遗漏了一些东西。

这是我们的龙目岛条目 -

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

请分享一些见解。

谢谢

小智 3

在 lombok 文档中,您可以在这里找到它https://projectlombok.org/api/lombok/extern/log4j/Log4j2.html

@Log4j2 公共类 LogExample { }

将生成:

公共类 LogExample { 私有静态最终 org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class); }

这两个类都存在于 log4j API jar中

这里没有列出已知的漏洞https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api

如此处所述https://logging.apache.org/log4j/2.x/log4j-api/index.html log4j api 只是一个接口。

我认为在这种情况下你的代码不依赖于 log4j 核心。您可以仔细检查构建的输出(例如 maven /target 文件夹、war 文件等)