依赖漏洞检查

为什么要检查项目依赖项

JHipster使用了许多技术,该项目在选择它们时非常谨慎。但是,也许项目错过了这么多依赖项中的一个漏洞,或者您添加或更新了一个触发新漏洞的依赖项。

根据OWASP十大最关键的Web应用程序安全风险,使用具有已知漏洞的组件(即,依赖项)排名第9,并且(由恶意的或不由第三方的)依赖项提供了许多已知的安全漏洞。

为什么JHipster默认不提供依赖项检查

在JHipster构建中提出默认情况下的依赖项检查已经讨论了几次(#6329, #8191)。总而言之,拥有一份现实的报告(消除误报)和上下文相关依赖(确保安全始终是在实际风险/批评与努力预防之间的权衡)是很复杂的。

但是,如果您在生产中使用JHipster,我们强烈建议使用诸如DependabotSnyk之类的依赖分析工具。

如果在JHipster的一个依赖项中检测到漏洞,该怎么办

如果您在JHipster的一个依赖项中发现了漏洞,请检查该漏洞是否在issue存在。

如果未提及任何漏洞相关内容,请私下向我们发送安全漏洞报告。请阅读有关如何漏洞的安全政策。包括重现漏洞利用,安全报告,博客文章等等步骤。

确保JHipster团队致力于提供高质量,企业级且安全的开发架构,并且此问题将是我们的重中之重。

如何检查JHipster项目的依赖关系

在服务器端检查

要检查Java依赖项是否具有已知的常见漏洞和披露(aka. CVE),请访问NIST国家漏洞数据库,该数据库维护了最新列表。

OWASP项目提供了Maven和Gradle插件来自动检查整个依赖链,生成报告甚至阻止构建(不建议这样做,在进行持续集成时会非常激进)。

如何阅读依赖性检查报告文档.

使用Maven

请参阅OWASP Maven Dependency Check插件文档

添加owasp依赖项检查插件:

<build>
...
  <plugins>
  ...
  <plugin>
      <groupId>org.owasp</groupId>
      <artifactId>dependency-check-maven</artifactId>
      <version>5.2.4</version>
      <executions>
        <execution>
          <goals>
            <goal>check</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  ..
  </plugins>
  ...
</build>

运行./mvnw verify将在target目录下生成一个依赖项检查报告。

使用Gradle

请参阅OWASP Gradle依赖检查插件文档

更新build.gradle文件以应用OWASP依赖项检查插件

plugins {
  // 添加插件在现有插件模块
  id "org.owasp.dependencycheck" version "5.2.4"

}

if(project.hasProperty('strict-security')) {
  check.dependsOn dependencyCheckAnalyze
}

运行./gradlew dependencyCheckAnalyzebuild/report目录中生成一个依赖项检查报告。

通过运行./gradlew check -Pstrict-security,可以通过依赖性检查来更新持续集成构建。

在前端检查

从版本6开始,默认情况下,NPM包括针对每个依赖项安装的安全审核。查看关于安全审核页面以获取更多信息。