我試圖從我的專案中洗掉 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 ?
我相信一定有人更早地解決了這個問題。
uj5u.com熱心網友回復:
我會在下面使用,但也要確保添加正確的 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'
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/418213.html
標籤:
