【问题标题】:Log4j2 vulnerability and Lombok annotation @log4j2Log4j2 漏洞和 Lombok 注解@log4j2
【发布时间】:2022-01-04 07:14:57
【问题描述】:

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

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

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

@Log4j2
@Service
@DependsOn("applicationDependencyCheck")

lombok @log4j2 是否不依赖于 log4j2-core.jar。假设这会出现在 maven 依赖树中是正确的还是我们遗漏了什么。

这是我们的龙目岛条目 -

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

请分享一些见解。

谢谢

【问题讨论】:

  • 是的,你很好。您仅使用 Log4j API。然后,您将通过 Slf4j API 进行管道传输,然后通过 Logback 进行管道传输。至于你为什么要这样做,谁知道呢?也许你之前的日志调用没有足够的延迟?
  • @BoristheSpider:这就是 Spring Boot 将所有内容重定向到单个后端的方式。但是,由于SLF4J LoggerLog4j API Logger 具有几乎相同的方法(至少是常用的方法),将@Log4j2 替换为@Slf4j 将完全消除对Log4j 2.x 的需求。
  • 感谢您的输入和确认

标签: java spring spring-boot log4j2 lombok


【解决方案1】:

在 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.htmllog4j api 只是一个接口。

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

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多