GitHub Enterprise Server によって� �告された依存関係の検出結果は、他のツールから返される結果とは異なる� �合があります。 これには理由があり、GitHub がプロジェクトの依存関係をどのように決定するかを理解しておくと便利です。
一部の依存関係がないように見えるのはなぜですか?
GitHub は、他のツールとは異なる方法で依存関係データを生成および表示します。 したがって、依存関係を特定するために別のツールを使用している� �合は、ほぼ確実に異なる結果が表示されます。 次に例を示します。
-
GitHub Advisory Database は、GitHub が脆弱性のある依存関係を識別するために使用するデータ ソースの 1 つです。 これは、GitHub の一般的なパッケージ エコシステ� のセキュリティ アドバイザリがキュレーションされた無料のデータベースです。 これには、GitHub Security Advisories から GitHub に直接� �告されたデータと、公式フィードおよびコミュニティソースの両方が含まれます。 このデータは GitHub によってレビューおよびキュレーションされ、虚偽または実行不可能な情� �が開発コミュニティと共有されないようにします。 詳しくは、「GitHub Advisory Database でのセキュリティ アドバイザリの参照」をご覧く� さい。
-
依存関係グラフは、ユーザのリポジトリ内のすべての既知のパッケージマニフェストファイルを解析します。 たとえば、npm の� �合、package-lock.json ファイルを解析します。 リポジトリのすべての依存関係とパブリック依存関係のグラフを作成します。 これは、依存関係グラフを有効にし、誰かがデフォルトブランチにプッシュしたときに発生します。また、サポートされているマニフェスト形式に変更を� えるコミットが含まれています。 詳細については、「依存関係グラフについて」および「依存関係グラフのトラブルシューティング」を参照してく� さい。
-
Dependabot は、マニフェストファイルを含むデフォルトブランチへのプッシュをスキャンします。 新しいアドバイザリが追� されると、既存のすべてのリポジトリがスキャンされ、影響を受けるリポジトリごとにアラートが生成されます。 Dependabot alerts は、アドバイザリごとに 1 つのアラートを作成するのではなく、リポジトリ レベルで集約されます。 詳細については、「Dependabot alerts について」を参照してく� さい。
-
Dependabot security updates は、リポジトリ内の脆弱性のある依存関係に関するアラートを受け取ったときにトリガーされます。 可能な� �合、Dependabot はリポジトリ内でプルリクエストを作成して、脆弱性を回避するために必要な最小限の安全なバージョンに脆弱性のある依存関係をアップグレードします。 詳細については、「Dependabot security updates について」と「Dependabot エラーのトラブルシューティング」を参照してく� さい。
Dependabot は、スケジュールに従ってではなく、何か変更があった� �合にリポジトリをスキャンします。 スキャンがトリガーされるのは、たとえば、新しい依存関係が追� されたとき (GitHub はプッシュのたびにこれをチェックします)、または新しいアドバイザリがデータベースに追� され、your GitHub Enterprise Server instance に同期されたときです。 詳細については、「Dependabot alertsについて」を参照してく� さい。
Dependabot alerts は、マニフェストとロックファイルの安全でない依存関係にのみ関連していますか?
Dependabot alerts は、推移的な依存関係を含め、更新する必要のある依存関係についてアドバイスします。この� �合、バージョンはマニフェストまたはロックファイルから判別できます。 Dependabot security updates は、Dependabot が依存関係を直接 "修正" できる� �合、つまり以下のような� �合にのみ変更を提案します。
- マニフェストまたはロックファイルで明示的に宣言されている直接依存関係
- ロックファイルで宣言されている推移的な依存関係
チェック: リポジトリのマニフェストまたはロックファイル内で指定されていないコンポーネントに対する、キャッチされていない脆弱性はありますか?
一部のエコシステ� で Dependabot alerts が生成されないのはなぜですか?
Dependabot alerts は、高品質でアクションにつながるデータを提供できるエコシステ� のセットに対してサポートされています。 GitHub Advisory Database、依存関係グラフ、および Dependabot alerts のキュレーションされたアドバイザリは、Java の Maven、JavaScript の npm と Yarn、.NET の NuGet、Python の pip、Ruby の RubyGems、PHP の Composer など、いくつかのエコシステ� に対して提供されます。 今後も、より多くのエコシステ� のサポートを追� していきます。 サポートされているパッケージ エコシステ� の概要については、「依存関係グラフについて」を参照してく� さい。
セキュリティ アドバイザリは、その他のエコシステ� に対しても存在するかもしれないことに注意してく� さい。 レビューされていないセキュリティ アドバイザリの情� �は、特定のリポジトリの保守担当者によって提供されます。 このデータは GitHub によってキュレーションされません。 詳しくは、「GitHub Advisory Database でのセキュリティ アドバイザリの参照」をご覧く� さい。
チェック: キャッチされていない脆弱性は、サポートされていないエコシステ� に適用されますか?
Dependabot は、何年も前から知られている脆弱性に対してアラートを生成しますか?
GitHub Advisory Database は 2019 年 11 月にリリースされ、2017 年からサポートされているエコシステ� のセキュリティ リスクのアドバイザリを含めるために当初にバックフィルされました。 データベースに CVE を追� するときは、新しい CVE のキュレーションと、新しいバージョンのソフトウェアに影響を与える CVE を優先します。
古い脆弱性に関するいくつかの情� �は、特にこれらの CVE が特に広範囲に及ぶ� �合に利用可能ですが、一部の古い脆弱性は GitHub Advisory Database に含まれていません。 データベースに含める必要のある特定の古い脆弱性がある� �合は、サイト管理者 にお問い合わせく� さい。
チェック: キャッチされていない脆弱性の公開日は、National Vulnerability Database で 2017 年より前ですか?
GitHub Advisory Database が公開された脆弱性データのサブセットを使用するのはなぜですか?
一部のサードパーティツールは、人間によるチェックまたはフィルタが行われていない未キュレートの CVE データを使用しています。 これは、タグ付けや重要度のエラー、またはその他の品質に問題のある CVE により、わずらわしく有用性の低いアラートが� �出するということです。
Dependabot は GitHub Advisory Database で厳選されたデータを使用するため、アラートの数は少なくなる可能性があります。た� し、受信するアラートは正確で関連性があるものです。
Dependabot では特定の依存関係を無視できますか?
構成ファイル内の特定の依存関係を無視するように Dependabot を構成できます。これにより、それらの依存関係に関するセキュリティとバージョンの更新が防止されます。 セキュリティ更新プログラ� のみを使用したい� �合は、構成ファイルで既定の動作をオーバーライドする必要があります。 詳細については、バージョンの更新がアクティブ化されないようにする方法について「構成ファイルで既定の動作をオーバーライドする」を参照してく� さい。 依存関係を無視する方法については、「ignore
」を参照してく� さい。