在 gradle 传递依赖项中检测 Apache Log4j 漏洞的存在
Posted
技术标签:
【中文标题】在 gradle 传递依赖项中检测 Apache Log4j 漏洞的存在【英文标题】:Detecting Apache Log4j vulnerability presence in gradle transitive dependencies 【发布时间】:2022-01-23 21:40:55 【问题描述】:最近在 log4j https://nvd.nist.gov/vuln/detail/CVE-2021-44228 中存在一个漏洞,其重要性得分为 10
如何检查 gradle 中是否存在易受攻击的 Log4j 版本,以便列出所有依赖项,包括传递依赖项?
【问题讨论】:
./gradlew -q dependencies|grep -i log4j
- 这应该为您提供所使用的 log4j 依赖项(如果有)的版本。
@Turing85,这不应该是一个答案,而不是一个评论吗?
【参考方案1】:
我们可以使用
./gradlew -q dependencies
列出依赖树。它将列出所有依赖项及其各自的版本。由于此输出可能很长,我们可以使用grep
对其进行过滤:
./gradelw -q dependencies | grep -i log4j
这将列出所有 log4j
-dependencies 及其各自的版本。
【讨论】:
gradle中也有dependencyInsight?知道这有什么不同,应该使用/不使用吗? gradle -q dependencyInsight 我推荐阅读documentation ondependencyInsight
。它指出:“...每个 Gradle 项目都提供任务 dependencyInsight
从命令行渲染所谓的依赖关系洞察报告。给定依赖关系图中的依赖关系,您可以识别选择原因并追踪依赖选择的起源。 ..."【参考方案2】:
gradle -q dependencyInsight --dependency org.apache.logging.log4j
--configuration scm
根据文章,还有另一种使用dependencyInsight检查此列表的方法:- https://venturebeat.com/2021/12/17/how-to-detect-whether-you-have-the-log4j2-vulnerability/
【讨论】:
以上是关于在 gradle 传递依赖项中检测 Apache Log4j 漏洞的存在的主要内容,如果未能解决你的问题,请参考以下文章