【问题标题】:how to remove log4j form recursive dependency?如何删除 log4j 形式的递归依赖?
【发布时间】:2022-01-20 21:55:34
【问题描述】:

我试图从我的项目中删除 log4j 依赖项,这是一个巨大的存储库。在仔细查看 gradle 文件后,我发现其中一个模块引用了 log4j 依赖项,我在 gradle 中排除了它,如下代码所示 - exclude group: 'log4j', module: 'log4j'

client {
    exclude group: 'org.slf4j', module: 'slf4j-log4j12'
    exclude group: 'log4j', module: 'log4j'
    exclude group: 'org.mortbay.jetty'
}

在此之后,我搜索了 log4j jar,但在整个存储库中都没有找到,这是存储库中的搜索结果 -

gunwant@devbox:bdp$ find ./ -regex ".*log4j.*\.jar"
./resources/spark/client-lib/apache-log4j-extras-1.2.17.jar
./resources/cassandra/lib/log4j-over-slf4j-1.7.25.jar
./resources/graph-server/lib/apache-log4j-extras-1.2.17.jar
./resources/log4j-appender/lib/cassandra-log4j-appender-3.1.0.jar
./dse-db/lib/log4j-over-slf4j-1.7.25.jar

但是关于 jenkins 的 FOSSA 安全报告显示 log4j 漏洞

这就是我卡住的地方。我通过“gradle allDeps”再次查看了存储库,列出了所有依赖项,我在 hadoop 模块中发现了一个递归依赖项-

|    |    +--- org.apache.hadoop:hadoop-auth:2.7.1.4
|    |    |    +--- org.slf4j:slf4j-api:1.7.10 -> 1.7.25
|    |    |    +--- commons-codec:commons-codec:1.4 -> 1.15
|    |    |    +--- log4j:log4j:1.2.17
|    |    |    +--- org.apache.httpcomponents:httpclient:4.4.1 -> 4.5.9 (*)
|    |    |    +--- org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15 -> 2.0.0-M24
|    |    |    |    +--- org.apache.directory.server:apacheds-i18n:2.0.0-M24
|    |    |    |    |    \--- org.slf4j:slf4j-api:1.7.25
|    |    |    |    +--- org.apache.directory.api:api-asn1-api:1.0.0 -> 1.0.3 (*)
|    |    |    |    +--- org.apache.directory.api:api-asn1-ber:1.0.0 -> 1.0.3 (*)
|    |    |    |    +--- org.apache.directory.api:api-i18n:1.0.0 -> 1.0.3
|    |    |    |    +--- org.apache.directory.api:api-ldap-model:1.0.0 -> 1.0.3 (*)
|    |    |    |    +--- org.apache.directory.api:api-util:1.0.0 -> 1.0.3 (*)
|    |    |    |    +--- net.sf.ehcache:ehcache:2.10.4
|    |    |    |    |    \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25
|    |    |    |    \--- org.slf4j:slf4j-api:1.7.25
|    |    |    +--- org.apache.zookeeper:zookeeper:3.4.6

在 zookeeper 中也是如此 -

|    |    |    +--- org.apache.zookeeper:zookeeper:3.4.6
|    |    |    |    +--- org.slf4j:slf4j-api:1.6.1 -> 1.7.25
|    |    |    |    +--- log4j:log4j:1.2.16 -> 1.2.17
|    |    |    |    +--- jline:jline:0.9.94 -> 2.14.6
|    |    |    |    \--- io.netty:netty:3.7.0.Final

我的第一个问题是,为什么 FOSSA 将 log4j 报告为漏洞,即使 log4j jar 文件实际上不存在于 repo 中?我知道 FOSSA 会扫描递归依赖。

我的第二个问题是,我们如何从 org.apache.hadoop 和 org.apache.zookeeper 递归依赖中排除 log4j?

我相信一定有人早先解决了这个问题。

【问题讨论】:

    标签: java gradle dependencies log4j


    【解决方案1】:

    我会在下面使用,但也要确保添加正确的 slf4j 库来替换接口,即。 log4j-over-slf4j

    project.configurations {
            all*.exclude group: 'commons-logging', module: 'commons-logging'
            all*.exclude group: 'log4j', module: 'log4j'
            all*.exclude group: 'org.slf4j', module: 'slf4j-log4j12'
        }
        project.dependencies { 
            implementation "org.slf4j:slf4j-api"
            implementation 'org.slf4j:jcl-over-slf4j'
            implementation 'org.slf4j:log4j-over-slf4j'
        }
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2020-02-20
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2021-07-26
      • 1970-01-01
      • 2015-01-08
      相关资源
      最近更新 更多