如何发现Log4j的深层使用

g6baxovj  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(133)

我想找到log4j在当前版本(2.15.0)之前的所有用法。
我尝试使用maven的“mvn dependency:tree”,使用了几个工具(dependency-check,grype(对我不起作用),syft(对我不起作用),log4j-detector),但它们只列出了在pom.xml中指定后生成的类。
"但是,这是我关心的“
例如,我正在使用一个叫做hibernate-validator(Hibernate Validator Engine)的库。我确信这个引擎使用了Jboss日志记录,而Jboss日志记录使用了log4j 2.11.2,但是我上面的工具都没有警告我这一点。我怎么才能知道,哪些库使用了log4j?
或者外部库不是此漏洞利用的威胁?
请指示。

xnifntxz

xnifntxz1#

Hibernate验证器在这里引导。您的依赖树中没有它,因为Hibernate验证器和JBoss日志记录根本不使用它。
Hibernate验证器对Log4j 2有一个test依赖关系,但它只是一个测试依赖关系。因此,为什么你在依赖树中看不到它,这是准确的。
我正在发布具有更新的测试依赖项的新HV版本,但这对您的应用程序来说不是问题,它们不会通过Hibernate验证器依赖于Log4j 2。
请https://github.com/hibernate/hibernate-validator/blob/main/engine/pom.xml#L119。

更新:为了避免安全扫描程序的误报,我发布了Hibernate验证器7.0.2.Final和6.2.1.Final。

yzuktlbb

yzuktlbb2#

JBoss日志记录、Jakarta Commons日志记录、SLF4J和Log4j 2.x API(与易受攻击的log4j-core不同)等日志记录接口不直接依赖于任何日志记录后端。
默认情况下,它们根据在类路径中找到的类来选择后端:如果类路径中没有log4j-core版本2.14.1或更早版本,则它们不会使用它
最坏的情况是:如果它们找不到后端,它们将恢复到默认设置,即可能记录到控制台,也可能根本不记录。

**编辑:**请参阅this question,了解如何强制Maven仅使用Log4j 2.15.0(如果确实需要)。

相关问题