当前位置: 首页 > 知识库问答 >
问题:

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

马胜泫
2023-03-14

由于Log4Shell漏洞,我想搜索并找出我的Java项目是直接实现Log4j还是通过依赖关系实现Log4j,以及哪个版本。

例如,我有使用这些依赖关系管理工具的项目:

  1. Maven项目

如何在这些类型的依赖关系管理工具上实现这一点?

有关漏洞的详细信息(包括缓解步骤):

CVE-2021-44228

Apache Log4j安全漏洞

共有3个答案

莫骞仕
2023-03-14

到目前为止,我对Syft和Grype提供的东西很满意。这些工具列出了给定Docker映像或包含独立于堆栈的代码的目录的所有代码依赖项!易于设置和快速执行。

不过,它与Java无关,并且比基于Maven的解决方案的特定问题更通用。所以它是否有用取决于你。

华良平
2023-03-14

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

mvn dependency:tree | grep log4j

这将检查您的依赖项,并仅在您将Log4j作为依赖项时显示结果。

如果它是一个可传递的依赖项,并且您想检查它来自哪个依赖项,您可以使用:

mvn dependency: tree | grep -B20 log4j

它将在屏幕上显示Log4j之前的20行。如果仍然看不到主要依赖项的来源,可以从20增加到50,依此类推,直到找到为止。

KKKK
颛孙飞
2023-03-14

您可以在项目中的命令行中运行Maven依赖树:

mvn dependency:tree

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

 类似资料:
  • 有选项可以在weblogic服务器上指定TLS或SSL 我无法访问web或app server配置,但我希望确定通过HTTPS连接到web服务器[nginx,apache http webserver]或appserver[weblogic]是否使用SSL或TLS,以及使用哪个版本。 如果

  • 我如何知道我使用的是哪个版本的Angular? 我试过: 但是找不到get 通过我知道我正在使用 但是如何获得angularjs版本?

  • 问题内容: 运行keras脚本时,得到以下输出: 这是什么意思?我是否正在使用GPU或CPU版本的Tensorflow? 在安装keras之前,我正在使用Tensorflow的GPU版本。 还显示和没有什么像。 运行[此stackoverflow问题]中提到的命令,将得到以下信息: 问题答案: 您正在使用GPU版本。您可以列出可用的tensorflow设备(也请检查此问题): 编辑: 使用tens

  • 我刚刚在Xcode中创建了一个新的Swift项目。我想知道它使用的是哪个版本的Swift。 我如何在Xcode或终端中看到我在项目中使用的Swift的哪个版本?

  • 当我运行keras脚本时,我得到以下输出: 这是什么意思?我是否使用GPU或CPU版本的tenstorflow? 在安装keras之前,我使用的是tensorflow的GPU版本。 另外显示了,与完全不同。 运行[this stackoverflow question]中提到的命令,可以得到以下结果:

  • 问题内容: 在我的Java项目中,我需要使用依赖于 lucene-3.6.2的* neo4j-1.9.3 和 依赖于 lucene-4.4.0的 ElasticSearch 。我知道,如果我想直接使用两个版本的Lucene,可以使用ClassLoader从Lucene加载不同的类。 * 但是问题是我现在不会直接使用lucene的api。有什么方法可以在neo4j的api运行时加载lucene-3.