如何删除 log4j 形式的递归依赖?
how to remove log4j form recursive dependency?
我试图从我的项目中删除 log4j 依赖项,这是一个巨大的存储库。在仔细查看 gradle 文件后,我发现其中一个模块引用了 log4j 依赖项,我在 gradle 中排除了它,如下面的代码所示 - 排除组:'log4j',模块: '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
还有动物园管理员 -
| | | +--- 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?
我相信一定有人早先解决了这个问题。
我会在下面使用,但还要确保您添加了正确的 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'
}
我试图从我的项目中删除 log4j 依赖项,这是一个巨大的存储库。在仔细查看 gradle 文件后,我发现其中一个模块引用了 log4j 依赖项,我在 gradle 中排除了它,如下面的代码所示 - 排除组:'log4j',模块: '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
还有动物园管理员 -
| | | +--- 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?
我相信一定有人早先解决了这个问题。
我会在下面使用,但还要确保您添加了正确的 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'
}