由于Log4Shell vulnerability,我想搜索一下我的Java项目是直接实现Log4j还是通过依赖关系实现Log4j,以及是哪个版本。
例如,我的一些项目使用了这些依赖关系管理工具:
- Maven项目
- Apache Ivy项目
1.没有任何依赖关系管理的旧遗留项目
如何在这些类型的依赖关系管理工具上执行此操作?
有关漏洞的详细信息(包括缓解步骤):
CVE-2021-44228
Apache Log4j Security Vulnerabilities
由于Log4Shell vulnerability,我想搜索一下我的Java项目是直接实现Log4j还是通过依赖关系实现Log4j,以及是哪个版本。
例如,我的一些项目使用了这些依赖关系管理工具:
3条答案
按热度按时间tsm1rwdh1#
您可以从项目内的命令行运行Maven依赖关系树:
在输出中搜索
log4j
。如果找到它,则可能意味着您的项目直接包含log4j
,或者另一个依赖项包含log4j
作为可传递依赖项。qybjjes12#
如果您使用Maven和Linux,则可以运行:
这将检查您的依赖关系,并且仅当您将Log4j作为依赖关系时才显示结果。
如果它是一个可传递的依赖项,并且您希望检查它来自的依赖项,则可以用途:
它会在屏幕上Log4j之前显示20行,如果你还是看不出它来自哪里的主依赖,你可以从20增加到50,以此类推,直到你找到它。
qvk1mo1f3#
到目前为止,我对Syft和 * Grype * 所提供的内容感到满意。这些工具列出了给定Docker映像或包含代码的目录的所有代码依赖项--独立于堆栈!易于设置和快速执行。
但是它是独立于Java的,并且比您针对基于Maven的解决方案提出的具体问题更通用,因此它是否有用取决于您。