
SBT依賴性檢查插件允許項目監視已知的已發表漏洞(例如CVE)的依賴庫。該插件通過使用Awesome Owasp依賴性庫來實現這一目標,該庫已經提供了與其他構建和連續集成系統的多個集成。有關OWASP ODASP依賴性檢查的更多信息以及如何閱讀報告檢查項目的文檔。
SBT依賴性檢查是自動浮游。只需將插件添加到project/plugins.sbt文件。
addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "5.1.0")
使用SBT依賴性檢查v2.0.0或更高,因為以前的版本與NVD feed不再兼容。不再支持從SBT依賴性檢查v3.0.0 SBT V0.13.x開始。
| 任務 | 描述 | 命令 |
|---|---|---|
| 依賴性檢查 | 對當前項目,其聚合和依賴關係進行依賴性檢查,並為每個項目生成一個報告。 | $ sbt dependencyCheck |
| depentencyCheckAggregate | 運行依賴關係檢查當前項目,其聚合和依賴項,並在當前項目的輸出目錄中生成單個報告。 | $ sbt dependencyCheckAggregate |
| depentencyCheckAnyproject | 對所有項目,聚合和依賴關係進行依賴性檢查,並在當前項目的輸出目錄中生成一個報告。 | $ sbt dependencyCheckAnyProject |
| distionencyCheckupDateonly | 更新NIST的NVD數據的本地緩存。 | $ sbt dependencyCheckUpdateOnly |
| 依賴性查克普爾 | 刪除NVD的本地副本。這用於迫使數據刷新。 | $ sbt dependencyCheckPurge |
| depentencyCheckListsettings | 打印所有設置及其項目的價值。 | $ sbt dependencyCheckListSettings |
報告將寫入默認位置crossTarget.value 。這可以通過設置dependencyCheckOutputDirectory來覆蓋。有關詳細信息,請參見配置。
注意:首次運行可能需要一段時間,因為NIST託管的國家漏洞數據庫(NVD)的完整數據必須下載並導入到數據庫中。後來的運行只會下載更改集,除非上次更新是7天以上。建議在本地網絡中設置NVD供稿的鏡像,以降低限制利率的風險。有關說明,請參見https://github.com/stevespringett/nist-data-mirror。
sbt-dependency-check使用OWASP依賴性檢查的默認配置。您可以在build.sbt文件中覆蓋它們。使用任務dependencyCheckListSettings將所有可用設置及其值打印到SBT控制台。
| 環境 | 描述 | 預設值 |
|---|---|---|
| depentencyCheckautoupdate | 設置是否啟用了NVD CVE/CPE,retireJS和託管抑制數據的自動更新。不建議將其轉變為false。 | 真的 |
| depentencyCheckCvevalidForHours | 設置等待小時數,然後再檢查NVD的新更新。 | 4 |
| depentencyCheckFailBuildonCVSS | 指定構建是否應失敗,如果確定了指定級別的CVSS分數或等於指定級別。默認值為11,這意味著由於CVSS分數為0-10,默認情況下,構建將永遠不會失敗。有關CVSS分數的更多信息,請參見NVD | 11.0 |
| dependencyCheckJunitFailBuildOncvss | 如果使用JUNIT報告格式,則DependencyCheckJunitFailOnCVSS設置CVSS得分閾值被認為是故障。默認值為0-所有漏洞都被認為是故障。 | 0 |
| depentencyCheckFormat | 報告格式要生成(HTML,XML,JUNIT,CSV,JSON,SARIF,JENKINS等)。如果設置了DependencyCheckReportformats,則將忽略此設置。 | html |
| depentencyCheckeckFormats | 要生成的一系列報告格式(HTML,XML,JUNIT,CSV,JSON,SARIF,JENKINS等)。 | |
| depentencyCheckOutputDirectory | 編寫報告的位置。 | crossTarget.value ,例如./target/scala-2.11 |
| depentencyCheckScanset | 一個可選的文件序列,以作為掃描的一部分指定其他文件和/或目錄進行分析。如果未指定,則默認為標準的Scala約定(有關詳細信息,請參見SBT文檔)。 | /src/main/resources |
| distionencyCheckskip | 跳過依賴性檢查分析 | 錯誤的 |
| distionencyCheckSkiptestScope | 跳過測試範圍的工件分析 | 真的 |
| distionencyCheckskipruntimescope | 跳過與運行時範圍的工件分析 | 錯誤的 |
| depentencyCheckskipprovidedscope | 跳過分析提供範圍的工件 | 錯誤的 |
| depentencyCheckskipoptionalsCope | 具有可選範圍的工件的跳過分析 | 錯誤的 |
| depentencyCheckSuppressionFiles | XML抑製文件的文件路徑序列 - 用於抑制誤報。請參閱文件語法抑制誤報。 | |
| depentencyCheckcpestartswith | 識別有資格導入的CPE的啟動字符串。 | |
| distionencyCheckhintsfile | XML提示文件的文件路徑 - 用於解決錯誤的負面因素。 | |
| depentencyCheckusesbtmoduleidasgav | 使用SBT模塊作為GAV標識符。即使不是Maven Central,也可以確保GAV可用。 | 錯誤的 |
| distionencyCheckanalysistimeout | 將分析超時設置為幾分鐘 | 20 |
| 依賴性檢查功能 | 啟用實驗分析儀。如果不啟用實驗分析儀(見下文),則不會加載或使用。 | 錯誤的 |
| depentencyCheckEnableRereTired | 啟用退休分析儀。如果未啟用,則不會加載或使用退休分析儀。 | 錯誤的 |
以下屬性用於配置各種文件類型分析儀。這些屬性可用於關閉特定分析儀(如果不需要)。請注意,如果未檢測到其支持的文件類型,則特定的分析儀將自動禁用自身 - 因此,可能不需要專門禁用它們。有關各個分析儀的更多信息,請參見依賴項分析儀文檔。
| 環境 | 描述 | 預設值 |
|---|---|---|
| depentencyCheckArchArchiveAnalizerAbled | 設置是否使用檔案分析儀。 | 真的 |
| depentencyCheckzipextensions | 逗號分隔的其他文件擴展名的列表將被視為zip文件,將提取和分析內容。 | |
| depentencyCheckJaranalyperabled | 設置是否使用JAR分析儀。 | 真的 |
| depentencyCheckDartanalyzerenabled | 設置是否啟用了實驗DART分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyChecknownnoyexploitedEnabled | 設置是否啟用了已知的漏洞更新和分析儀。 | 真的 |
| distionencyChecknoyexploitedUrl | 將URL設置為CISA已知剝削漏洞JSON數據提要。 | https://www.cisa.gov/sites/default/files/feeds/nown_exploited_vulnerabilities.json |
| distionencyChecknownnoexploitedValidforHours | 將間隔設置為小時,直到下一次檢查CISA已知漏洞的漏洞JSON數據提要為止。 | 24 |
| depentencyCheckCentralanalyazerenabled | 設置是否使用中央分析儀。如果該分析儀被禁用,則很有可能也希望禁用Nexus分析儀(見下文)。 | 錯誤的 |
| 依賴性切口室分析儀 | 設置中央分析人員是否會緩存結果。 30天后,緩存結果到期。 | 真的 |
| depentencyCheckossIndexanalyzerenabled | 設置是否將啟用OSS索引分析儀。 | 真的 |
| DepentencyCheckossIndexanalyzerurl | Sonatype OSS索引服務的URL。 | https://ossindex.sonatype.org |
| DependencyCheckossIndexanalyerusecache | 設置OSS索引分析儀是否會緩存結果。緩存的結果在24小時後到期。 | 真的 |
| depentencyCheckossIndexanalyerusername | 用於Sonatype OSS索引服務的可選用戶名。注意:不需要帶有OSS索引的帳戶。 | |
| depentencyCheckossIndexanalyzerpassword | 用於Sonatype OSS索引服務的可選密碼。 | |
| DepentencyCheckossindexwarnonlyonremoteErrors | 設置是否來自OSS索引的遠程錯誤(例如,不良網關,超過速率限制)僅會導致警告而不是執行失敗。 | 錯誤的 |
| depentencyCheckNexusanalyperabled | 設置是否將使用Nexus分析儀。該分析儀由中央分析儀取代;但是,您可以將其配置為與Nexus Pro安裝相對。 | 錯誤的 |
| 依賴性Checknexusurl | 定義Nexus Server的Web服務終點(例如http://domain.enterprise/service/local/)。如果未設置,則將禁用Nexus分析儀。 | https://repository.sonatype.org/service/local/ |
| 依賴性checknexusesproxy | 連接到Nexus時是否應使用定義的代理。 | 真的 |
| distionencyCheckNexususer | 驗證Nexus Server的Web服務終點的用戶名。如果未設置,則Nexus分析儀將使用未經驗證的連接。 | |
| distionencyCheckNexusPassword | 驗證Nexus Server的Web服務終點的密碼。如果未設置,則Nexus分析儀將使用未經驗證的連接。 | |
| depentencyCheckpyDistributionAnalyzerenabled | 集合是否將使用實驗性Python分配分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckPypackagagageAnalyzerenabled | 集合是否將使用實驗Python軟件包分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckRubyGemSanalyzerenabled | 集合是否將使用實驗性Ruby Gemspec分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckopensSlanalyperabled | 設置是否應使用OpenSSL分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckCmakeAnalyzerenabled | 設置是否應使用實驗CMAKE分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckAutoconfanalyzerenabled | 集合是否應該使用實驗性自動配置分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckMaveninStallanalyazerenabled | 設置是否應使用Maven安裝分析儀。 | 真的 |
| depentencyCheckPainezecheenabled | 設置是否應使用實驗PIP分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckPipFileAnalyzerenabled | 設置是否應將實驗性管道分析dependencyCheckEnableExperimental設置為true。 | 真的 |
| depentencyCheckpoetryanalyazerenabled | 設置是否應將實驗詩分析dependencyCheckEnableExperimental設置為true。 | 真的 |
| depentencyCheckComposeranalyzerenabled | 設置是否應使用實驗性PHP作曲家鎖定文件分析器。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckccpanFileAnalypareensable | 設置是否應使用實驗性Perl CPAN文件分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckNodeAnalizerAbled | 設置是否應使用退休的Node.js分析儀。 | 錯誤的 |
| 依賴性依賴性依賴性 | 設置node.js分析儀是否會跳過dev依賴性。 | 錯誤的 |
| depentencyCheckNodeAuditAnalyzerenabled | 設置是否應使用節點審核分析儀。 | 真的 |
| 依賴性依賴性依賴性 | 設置節點審核分析儀是否會跳過DevDections。 | 錯誤的 |
| depentencyCheckNodeAuditanalyzerurl | 為節點審核分析儀設置節點審核API URL。如果未設置,則使用默認URL。 | https://registry.npmjs.org/-/npm/v1/security/audits |
| depentencyCheckNodeAuditanalyerusecache | 設置節點審核分析儀是否會緩存結果。緩存的結果在24小時後到期。 | 真的 |
| depentencyChecknpmcpmcpeanmalyzerenable | 設置是否應該使用實驗NPM CPE分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| 依賴性檢查的Arnaudatanalymerabled | 設置是否應使用紗線審核分析儀。該分析儀需要紗線和互聯網連接。使用dependencyCheckNodeAuditSkipDevDependencies跳過Dev依賴項。 | 真的 |
| DepentencyCheckPathtoyarn | 設置紗線可執行文件的路徑。 | |
| depentencyCheckpnpmauditanalymerabled | 設置是否啟用了PNPM審核分析儀。該分析儀需要PNPM和Internet連接。使用nodeAuditSkipDevDependencies跳過dev依賴性。 | 真的 |
| distionencyCheckPathtopnpm | 將路徑設置為pnpm可執行文件。 | |
| depentencyChecknuspecanalyzerenabled | 設置是否使用.NET Nuget Nuspec分析儀。 | 真的 |
| depentencyCheckNugetConfanalyzerenabled | 設置是否將使用實驗.NET Nuget packages.config分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 錯誤的 |
| depentencyCheckCocoaPodSeNabled | 設置是否應使用實驗性可可分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckMixauditanalyazerenabled | 集合是否應使用實驗混合審核分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 星期二 |
| distionencyCheckMixAuditPath | 將路徑設置為Mix_audit可執行文件;僅在啟用混合審計分析儀並啟用實驗分析儀時使用。 | |
| distionencyCheckSwiftEnabled | 設置是否應使用實驗Swift軟件包管理器分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckSwiftPackageresolvedanalyzerenabled | 設置是否應使用實驗SWIFT軟件包解決方案。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckBundLeaudIteNabled | 設置是否應使用實驗性紅寶石捆綁審核分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckPathtobundleaudit | 紅寶石捆綁審核的路徑。 | |
| depentencyCheckBundLeauditWorkingDirectory | 為Ruby Bundle審計二進制執行的工作目錄設置路徑。 | |
| depentencyCheckAssemblyAnalyperable | 設置是否應使用.NET組裝分析儀。 | 真的 |
| depentencyCheckmsbuildanalyazerenable | 設置是否應使用MSBUILD分析儀。 | 真的 |
| depentencyCheckPathTodotnetnetcore | 在非窗口系統上進行.NET組裝分析的.NET核心的路徑。 | |
| depentencyCheckpeAnerazerenable | 設置是否應使用讀取DLL和EXE文件的PE標頭的實驗性PE分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckretirejsanalyperabled | 設置是否應使用退休分析儀。 | 真的 |
| depentencyCheckretirejsforceupdate | 設置退休分析儀是否應更新,無論“依賴性checkautoupdate”設置如何。 | 真的 |
| DepentencyCheckretirejsanalyzerrepojsurl | 將URL設置為RetireJS存儲庫。注意文件名必須是jsrepository.json | https://raw.githubusercontent.com/retirejs/retire.js/master/repository/jsrepository.json |
| distionencyCheckretirejsanalyzerrepouser | 用戶名可用於連接到retireJS URL的用戶名。 | |
| distionencyCheckretirejsanalyzerrepopassword | 密碼用於身份驗證可以連接到retireJS URL。 | |
| DepentencyCheckretirejsanalyzerrepovalidfor | 在小時內設置間隔,直到下一次檢查CVES更新由RetireJS Analyzer執行 | 24 |
| 依賴性checkretirejsanalyzerfilters | 為RetireJS分析儀設置一個或多個過濾器。 | |
| 依賴性Checkretirejsanalyzerfilternonnonnondernerable | 設置退休分析儀是否應過濾不可洩漏的依賴關係 | 錯誤的 |
| depentencyCheckArtifactoryAnalyazerabled | 設置是否使用JFrog文物分析儀 | 錯誤的 |
| DepentencyCheckArtifactoryAnalyzerurl | 文物服務器URL。 | |
| 依賴性checkartifactoryAnalyzeruseproxy | 設置是否應通過代理訪問文物。 | 錯誤的 |
| 依賴性checkartifactoryanalyazerparelalyalysy | 設置是否應並非應並非運行偽像分析儀。 | 真的 |
| depentencyCheckArtifactoryAnalyerusername | 用戶名(僅與API令牌一起使用)可以連接到文物實例。 | |
| depentencyCheckArtifactoryAnalyalizerapitoken | API令牌可以連接到文物實例。注意:出於安全原因,不應將這些設置添加到您的本地build.sbt文件中。可以將它們添加到~/.sbt/<version>/global.sbt文件中 | |
| depentencyCheckArtifactoryAnalyalerbearerToken | 攜帶者令牌可以連接到文物實例。注意:出於安全原因,不應將這些設置添加到您的本地build.sbt文件中。可以將它們添加到~/.sbt/<version>/global.sbt文件中 | |
| depentencyCheckGolangDepenabled | 集合是否應使用實驗性golang依賴分析儀。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| depentencyCheckGolangModeNabled | 集合是否應使用實驗性Golang模塊分析儀。需要go 。 dependencyCheckEnableExperimental必須設置為true。 | 真的 |
| distionencyCheckPathtogo | 通往“ GO”運行時的路徑。 |
可以在插件中配置以下屬性。但是,它們的變化頻率較低。一個例外可能是Cawingurl屬性,可用於在企業環境中託管NVD的鏡像。
| 環境 | 描述 | 預設值 |
|---|---|---|
| depentencyCheckCveurlModified | 修改後的CVE JSON數據源的URL。鏡像NVD時,您必須鏡像 *.json.gz和 *.meta文件。可選,如果您的自定義dependencyCheckCveUrlBase只是一個域名更改。 | https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.json.gz |
| depentencyCheckCveurlBase | 每年CVE JSON數據提要的基本URL,%d將被一年替換。 | https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-d.json.gz |
| depentencyCheckCveuser | 連接到dependencyCheckCveUrlBase時使用的用戶名。 | |
| depentencyCheckCvePassword | 連接到dependencyCheckCveUrlBase時使用的密碼。 | |
| distionencyCheckCveWaittime | 從NVD下載之間等待毫秒的時間。 | 4000 |
| depentencyCheckCvestartArtyear | NVD CVE數據的第一年將從NVD下載。 | 2002 |
| depentencyCheckConnectionTimeOut | 設置下載外部數據時使用的URL連接超時(以毫秒為單位)。 | |
| distionencyCheckConnectionReadTimeOut | 設置下載外部數據時使用的URL讀取超時(以毫秒為單位)。 | |
| depentencyCheckDataDirectory | 設置數據目錄以保存SQL CVE內容。這通常不應該更改。 | [jar] data |
| depentencyCheckDatabasedRivername | 數據庫驅動程序的名稱。示例:org.h2.driver。 | org.h2.driver |
| distionencyCheckDatabasedRiverPath | 數據庫驅動程序jar文件的路徑;僅當驅動程序不在類路徑中時使用。 | |
| depentencyCheckConnectionsTring | 用於連接到數據庫的連接字符串,%s將被替換為數據庫的名稱 | JDBC:H2:file:%s; autocommit = on; mv_store = false;; |
| depentencyCheckDatabaseuser | 連接到數據庫時使用的用戶名。 | dcuser |
| distionencyCheckDatabasepassword | 連接到數據庫時使用的密碼。 | |
| depentencyCheckHostedSuppressionsEnabled | 是否將使用託管的抑製文件。 | 真的 |
| depentencyCheckHostedSupressionsForceUpdate | 託管抑製文件是否會更新,而不管dependencyCheckAutoUpdate設置如何。 | 錯誤的 |
| depentencyCheckHostedSuprespressionsurl | 用於Internet受限環境的託管抑製文件的鏡像副本的URL。 | https://jeremylong.github.io/deppentendencyCheck/suppressions/publishingsuppressions.xml |
| depentencyCheckHostedsupressionsValidforHours | 設置等待小時數,然後再檢查NVD的新更新。 | 2 |
如果要為所有項目定義設置,請使用Global或ThisBuild範圍。在項目級別上定義如果您想從特定項目的默認或全局/this -Build設置差異。
build.sbt
Global / dependencyCheckFormats := Seq ( " HTML " , " JSON " )
lazy val root = (project in file( " . " ))
.aggregate(core)
.settings(
libraryDependencies += " com.github.t3hnar " %% " scala-bcrypt " % " 2.6 " % " test " ,
dependencyCheckSkipTestScope := false
)
lazy val util = (project in file( " util " ))
.settings(
libraryDependencies += " commons-beanutils " % " commons-beanutils " % " 1.9.1 "
)
lazy val core = project.dependsOn(util)
.settings(
libraryDependencies += " org.apache.commons " % " commons-collections4 " % " 4.1 " % " runtime " ,
dependencyCheckSkip := true
)
幾乎所有設置僅對您執行任務的項目進行評估,而不是每個單獨的子項目。支持為aggregate()和dependsOn()項目工作的豁免是跳過設置的範圍:
dependencyCheckSkipdependencyCheckSkipTestScopedependencyCheckSkipRuntimeScopedependencyCheckSkipProvidedScopedependencyCheckSkipOptionalScope如有必要,您應該為每個項目單獨設置這些這些。
將以下內容添加到您的build.sbt文件中,以將日誌級別從默認info增加到例如debug 。
logLevel in dependencyCheck := Level.Debug
並添加-Dlog4j2.level=debug :
sbt -Dlog4j2.level=debug dependencyCheck
用您用於項目的正確任務名稱替換dependencyCheck 。
如果要為所有SBT項目應用一些默認配置,則可以將它們添加為全局設置:
將插件添加到~/.sbt/1.0/plugins/sbt-dependency-check.sbt
addSbtPlugin( " net.vonbuchholtz " % " sbt-dependency-check " % " 5.1.0 " )使用完全合格的名稱(包括包裝和嵌套的對象結構)添加~/.sbt/1.0/global.sbt的設置。例如
net.vonbuchholtz.sbt.dependencycheck. DependencyCheckPlugin .autoImport.dependencyCheckFormat := " All "有關全局設置和插件的更多信息,請查看SBT文檔:https://www.scala-sbt.org/1.x/docs/global-settings.html
SBT和sbt-dependency-check JVM的標準HTTP和HTTPS代理設置。
sbt -Dhttp.proxyHost=proxy.example.com
-Dhttp.proxyPort=3218
-Dhttp.proxyUser=username
-Dhttp.proxyPassword=password
-DnoProxyHosts="localhost|http://www.google.com"
dependencyCheck
purgeDeletesDatabase run查詢Update PUBLIC.PROPERTIES t SET t."VALUE"= '<NEW_VERSION_NUMBER>' WHERE t.ID = 'version'運行release任務並遵循說明。驗證該釋放到達Maven Central。 https://search.maven.org索引最多需要兩個小時。
版權(C)2016-2022 Alexander Baron訴Buchholtz
根據Apache許可證(版本2.0(“許可”)獲得許可;除了符合許可外,您不得使用此文件。您可以在
https://www.apache.org/licenses/license-2.0
除非適用法律要求或以書面形式同意,否則根據許可證分配的軟件是按照“原樣”分發的,沒有任何明示或暗示的任何形式的保證或條件。請參閱許可證,以獲取執行許可條款和限制的特定語言。