如何检查我的Java项目是否使用Log4j以及使用哪个版本?

kcugc4gi  于 2022-11-06  发布在  Java
关注(0)|答案(3)|浏览(328)

由于Log4Shell vulnerability,我想搜索一下我的Java项目是直接实现Log4j还是通过依赖关系实现Log4j,以及是哪个版本。
例如,我的一些项目使用了这些依赖关系管理工具:

  1. Maven项目
  2. Apache Ivy项目
    1.没有任何依赖关系管理的旧遗留项目
    如何在这些类型的依赖关系管理工具上执行此操作?
    有关漏洞的详细信息(包括缓解步骤):
    CVE-2021-44228
    Apache Log4j Security Vulnerabilities
tsm1rwdh

tsm1rwdh1#

您可以从项目内的命令行运行Maven依赖关系树:

mvn dependency:tree

在输出中搜索log4j。如果找到它,则可能意味着您的项目直接包含log4j,或者另一个依赖项包含log4j作为可传递依赖项。

qybjjes1

qybjjes12#

如果您使用Maven和Linux,则可以运行:

mvn dependency:tree | grep log4j

这将检查您的依赖关系,并且仅当您将Log4j作为依赖关系时才显示结果。
如果它是一个可传递的依赖项,并且您希望检查它来自的依赖项,则可以用途:

mvn dependency: tree | grep -B20 log4j

它会在屏幕上Log4j之前显示20行,如果你还是看不出它来自哪里的主依赖,你可以从20增加到50,以此类推,直到你找到它。

KKKK
qvk1mo1f

qvk1mo1f3#

到目前为止,我对Syft和 * Grype * 所提供的内容感到满意。这些工具列出了给定Docker映像或包含代码的目录的所有代码依赖项--独立于堆栈!易于设置和快速执行。
但是它是独立于Java的,并且比您针对基于Maven的解决方案提出的具体问题更通用,因此它是否有用取决于您。

相关问题