
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
除非适用法律要求或以书面形式同意,否则根据许可证分配的软件是按照“原样”分发的,没有任何明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。