2

我想找到当前版本(2.15.0)之前 log4j 的所有用法。

我尝试使用 maven 的“mvn dependency:tree”,使用了几个工具(依赖检查、grype(对我不起作用)、syft(对我不起作用)、log4j-detector),但它们只列出了哪些类在 pom.xml 中指定它们后生成。

但是 - 这是我关心的问题:

例如,我正在使用一个名为 hibernate-validator(Hibernate Validator Engine)的库。我确信这个引擎使用 Jboss 日志记录,而后者又使用 log4j 2.11.2,但我上面的工具都没有警告我这一点。如何找出哪些库使用 log4j?

或者外部库不是这个漏洞的威胁吗?

请指教。

4

2 回答 2

8

Hibernate Validator 在这里领导。您的依赖关系树中没有它,因为 Hibernate Validator 和 JBoss Logging 根本不使用它。

Hibernate Validator 对 Log4j 2 有一个测试依赖,但它只是一个测试依赖。因此,为什么您在依赖关系树中看不到它,这是准确的。

我正在发布具有更新的测试依赖项的新 HV 版本,但这对您的应用程序来说不是问题,它们不会通过 Hibernate Validator 依赖 Log4j 2。

请参阅https://github.com/hibernate/hibernate-validator/blob/main/engine/pom.xml#L119

更新:为了避免来自安全扫描器的误报,我发布了 Hibernate Validator 7.0.2.Final 和 6.2.1.Final。

于 2021-12-13T19:17:10.757 回答
4

JBoss 日志、Jakarta Commons Logging、SLF4J 和 Log4j 2.x API(与易受攻击的不同log4j-core)等日志接口不直接依赖于任何日志后端。

默认情况下,他们根据在类路径中找到的类来选择后端:如果您的类路径中没有log4j-core2.14.1 或更早版本,他们将不会使用它

您可能遇到的最坏情况:如果他们没有找到后端,他们会恢复为默认值,这可能会记录到控制台或根本不记录。

编辑:请参阅this question on how to force Maven to only use Log4j 2.15.0(如果需要的话)。

于 2021-12-13T19:18:22.533 回答