Skip to main content

依存関係の脆弱性チェック

プロジェクトの依存関係をチェックする必要がある理由

JHipsterは多くの技術を使用しており、プロジェクトはそれらを選択する際に非常に慎重です。しかし、プロジェクトがそれらの多くの依存関係の中の1つの脆弱性を見逃すか、あるいは新しい脆弱性を引き起こした1つの依存関係を追加または更新するかもしれません。

OWASP Webアプリケーションの最も重大なセキュリティリスクトップ10によると、既知の脆弱性を持つコンポーネント(依存関係)の使用は9位にランクされており、(悪意のあるものであるかどうかにかかわらず)サードパーティの依存関係によるセキュリティ違反の話が多く知られています。

JHipsterがデフォルトで依存関係チェックを提供しない理由

JHipsterビルドでデフォルトで依存関係チェックを提案することは、何度か議論されました(#6329#8191)。要約すると、現実的なレポート(偽陽性を削除する)とコンテキスト依存(セキュリティは常に実際のリスク/批判とそれを防ぐ努力との間のトレードオフである)を持つことは複雑です。

ただし、本番環境でJHipsterを使用している場合は、DependabotまたはSnykなどの依存性分析ツールを使用することを強くお勧めします。

JHipsterの依存関係の1つに脆弱性が検出された場合の対処法

JHipsterの依存関係の1つに弱点を見つけた場合は、その弱点に対してすでにオープンされている既存のissueがないかどうかを確認してください。

何も言及されていない場合は、セキュリティ脆弱性レポートを個人的に送信してください。送信方法については、セキュリティポリシーをお読みください。エクスプロイトを再現する手順、セキュリティレポート、ブログ記事などを含めてください。

JHipsterチームは、高品質でエンタープライズ対応の安全な開発スタックを提供することを約束し、この問題が私たちにとって最優先事項であることを確認してください。

JHipsterプロジェクトの依存関係をチェックする方法

サーバ側でのチェック

Javaの依存関係に既知のCommon Vulnerabilities and Exposures(aka.CVE)があるかどうかをチェックするには、NIST脆弱性データベースにアクセスしてください。

OWASPプロジェクトは、依存関係チェイン全体を自動的にチェックし、レポートを生成し、ビルドをブロックするためのMavenとGradleプラグインを提供しています(推奨されませんが、継続的インテグレーションを行う場合は非常に積極的に行うことができます)。

依存性チェックレポートの読み方を説明したドキュメントはこちら

Mavenの使用

OWASP Maven依存関係チェックプラグインのドキュメントを参照してください。

owasp dependency-checkプラグインを追加します。

<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 dependency-check-gradleプラグインを適用します。

plugins {
// 既存のプラグインブロックにプラグインを追加
id "org.owasp.dependencycheck" version "5.2.4"

}

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

./gradlew dependencyCheckAnalyzeを実行すると、build/reportディレクトリ内に依存性チェックレポートが生成されます。

継続的インテグレーションのビルドを依存性チェック付きで更新するには、./gradlew check -Pstrict-securityを実行します。

クライアント側でのチェック

バージョン6以降、NPMには、各依存関係インストールごとにデフォルトでセキュリティー監査が組み込まれています。セキュリティー監査について ページを参照してください。