リポジトリの [Dependabot alerts] タブには、オープンおよびクローズされたすべての Dependabot alerts や対応する Dependabot security updates が一覧表示されます。 パッケージ、エコシステム、マニフェストでアラートをフィルター処理できます。 アラートの一覧を並べ替えたり、特定のアラートをクリックしてその詳細を表示したりできます。 アラートを 1 つずつ、または複数のアラートを一度に選択して、閉じるか、再度開くこともできます。 詳しくは、「Dependabot アラートについて」を参照してください。
Dependabot alerts と依存関係グラフを使用するリポジトリの自動セキュリティ アップデートを有効にすることができます。 詳しくは、「Dependabot のセキュリティ アップデート」を参照してください。
リポジトリ内の脆弱性のある依存関係の更新について
コードベースのデフォルトブランチで既知のセキュリティ リスクのある依存関係が検出されると、GitHub によって Dependabot alerts が生成されます。 Dependabot security updates が有効になっているリポジトリの場合、GitHub がデフォルトのブランチで脆弱性のある依存関係を検出すると、Dependabot はそれを修正するためのプルリクエストを作成します。 プルリクエストは、脆弱性を回避するために必要最低限の安全なバージョンに依存関係をアップグレードします。
Dependabot では、マルウェアに対する Dependabot alertsは生成されません。 詳しくは、「GitHub Advisory Database について」を参照してください。
各 Dependabot アラートには一意の数値識別子があり、[Dependabot alerts] タブには、検出された各脆弱性に対するアラートが一覧表示されます。 従来の Dependabot alertsでは、依存関係ごとに脆弱性がグループ化され、依存関係ごとに 1 つのアラートが生成されていました。 従来の Dependabot アラートに移動すると、そのパッケージに対してフィルター処理された [Dependabot alerts] タブにリダイレクトされます。
ユーザー インターフェイスで使用できるさまざまなフィルターと並べ替えオプションを使って、Dependabot alerts をフィルター処理して並べ替えることができます。 詳しい情報については、以下の「Dependabot alertsの優先順位付け」を参照してください。
Dependabot アラートに応答するために行われたアクションを監査することもできます。 詳しくは、「セキュリティ アラートの監査」を参照してください。
Dependabot alertsの優先順位付け
GitHub は、Dependabot alertsの修正の優先順位を付けるのに役立ちます。 既定では、Dependabot alerts は重要度で並べ替えられています。 "最重要" 並べ替え順序は、最初に注目する Dependabot alertsの優先順位を付けるのに役立ちます。 アラートは、潜在的な影響、実用性、関連性に基づいてランク付けされます。 Github の優先順位付けの計算は常に改善されており、CVSS スコア、依存関係スコープ、アラートに対して脆弱な関数呼び出しが見つかるかどうかなどの要因が含まれています。 Dependabot alerts に優先順位をつけるための Dependabot 自動トリアージ ルール も使用できます。 詳しくは、「Dependabot 自動トリアージ ルールについて」をご覧ください。
検索バーにフィルターを key:value
ペアとして入力すると、Dependabot alerts を並べ替えたりフィルター処理したりすることができます。
オプション | 説明設定 | 例 |
---|---|---|
ecosystem | 選んだエコシステムのアラートを表示します | ecosystem:npm を使用して npm の Dependabot alerts を表示します |
has | 選んだフィルター条件を満たすアラートを表示します | has:patch を使用してパッチを持つアドバイザリに関するアラートを表示します。has:vulnerable-calls を使用して、脆弱な関数の呼び出しに関するアラートを表示します |
is | 状態に基づいてアラートを表示します | is:open を使用して、開いているアラートを表示します |
manifest | 選んだマニフェストのアラートを表示します | manifest:webwolf/pom.xml を使用して、Webwolf アプリケーションの pom.xml ファイルにアラートを表示します |
package | 選んだパッケージのアラートを表示します | package:django を使用して、django のアラートを表示します |
resolution | 選んだ解決状態のアラートを表示します | resolution:no-bandwidth を使用して、リソースまたは修正時間が足りなかったために以前にパークされたアラートを表示します |
repo | 関連するリポジトリに基づいてアラートを表示します このフィルターは、セキュリティの概要でのみ使用できる点にご注意ください。 詳しくは、「セキュリティの概要について」をご覧ください | repo:octocat-repo を使用して、呼び出された octocat-repo リポジトリにアラートを表示します。 |
scope | 関連する依存関係のスコープに基づいてアラートを表示します | scope:development を使用して、開発中にのみ使用される依存関係のアラートを表示します |
severity | 重大度のレベルに基づいてアラートを表示します | severity:high を使用して、重大度が高いアラートを表示します |
sort | 選んだ並べ替え順序に従ってアラートを表示します | アラートの既定の並べ替えオプションは sort:most-important であり、重要度でアラートが優先度付けされますsort:newest を使用して、Dependabot によって報告された最新のアラートを表示します |
検索バーで使用できるフィルターに加えて、アラート一覧の上部にあるドロップダウン メニューを使用して、Dependabot alertsを並べ替えたりフィルター処理したりできます。 または、ラベルでフィルター処理する場合、アラートに割り当てられているラベルをクリックすると、そのフィルターがアラート一覧に自動的に適用されます。
検索バーでは、アラートと関連するセキュリティ アドバイザリのフルテキスト検索も可能です。 セキュリティ アドバイザリの名前または説明の一部を検索して、そのセキュリティ アドバイザリに関連するリポジトリのアラートを返すことができます。 たとえば、yaml.load() API could execute arbitrary code
の検索では、アドバイザリの説明に検索文字列が表示されるので、"PyYAML によって安全でない方法で YAML 文字列が逆シリアル化され、任意のコード実行につながります" にリンクされた Dependabot alertsが返されます。
依存関係スコープでサポートされるエコシステムとマニフェスト
次の表は、依存関係スコープがさまざまなエコシステムとマニフェストでサポートされているかどうか、つまり、Dependabot で依存関係が開発または生産に使われていることを識別できるかどうかまとめたものです。
Language | エコシステム | マニフェスト ファイル | 依存関係スコープがサポートされている |
---|---|---|---|
Dart | pub | pubspec.yaml | |
Dart | pub | pubspec.lock | |
Go | Go モジュール | go.mod | いいえ、既定値はランタイムです |
Java | Maven | pom.xml | test は開発にマップされ、それ以外のスコープは既定でランタイムにマップされます |
JavaScript | npm | package.json | |
JavaScript | npm | package-lock.json | |
JavaScript | npm | pnpm-lock.yaml | |
JavaScript | yarn v1 | yarn.lock | いいえ、既定値はランタイムです |
PHP | Composer | composer.json | |
PHP | Composer | composer.lock | |
Python | Poetry | poetry.lock | |
Python | Poetry | pyproject.toml | |
Python | pip | requirements.txt | filename に test または dev が含まれている場合、スコープは開発です。それ以外の場合はランタイムです |
Python | pip | pipfile.lock | |
Python | pip | pipfile | |
Ruby | RubyGems | Gemfile | |
Ruby | RubyGems | Gemfile.lock | いいえ、既定値はランタイムです |
Rust | Cargo | Cargo.toml | |
Rust | Cargo | Cargo.lock | いいえ、既定値はランタイムです |
YAML | GitHub のアクション | - | いいえ、既定値はランタイムです |
.NET (C#、F#、VB など) | NuGet | .csproj / .vbproj .vcxproj / .fsproj | いいえ、既定値はランタイムです |
.NET | NuGet | packages.config | いいえ、既定値はランタイムです |
.NET | NuGet | .nuspec | タグ != ランタイムの場合 |
開発時の依存関係として一覧表示されるパッケージに対するアラートは、Dependabot alerts ページに Development
ラベルでマークされて表示され、scope
フィルターでフィルター処理することもできます。
開発スコープ パッケージに対するアラートのアラート詳細ページには、Development
ラベルを含む [タグ] セクションが表示されます。
脆弱性のある関数の呼び出しの検出について
注:
- Dependabot による脆弱な関数の呼び出しの検出は パブリック プレビュー であり、変更される場合があります。
- パブリック リポジトリで脆弱な呼び出しの検出が有効になっています。 また、この分析は、GitHub Enterprise Cloud を使い、GitHub Advanced Security のライセンスを持つ組織が所有するプライベート リポジトリでも使用できます。 詳しくは、「GitHub Advanced Security について」を参照してください。
Dependabot により、リポジトリで脆弱性のある依存関係を使用していることが示される場合は、脆弱性のある関数が何であるかを判断し、それらを使用しているかどうかを確認する必要があります。 この情報を取得したら、セキュリティで保護されたバージョンの依存関係へのアップグレードをどの程度早急に行う必要があるかを判断できます。
サポートされている言語では、Dependabot により、脆弱性のある関数を使用しているかどうかが自動的に検出され、影響を受けるアラートに "脆弱性のある呼び出し" というラベルが追加されます。 Dependabot alerts ビューでこの情報を使用して、修復作業をより効果的にトリアージし、優先順位を付けることができます。
メモ: パブリック プレビュー リリース中、この機能は、2022 年 4 月 14 日 より後 に作成された新しい Python アドバイザリと、履歴 Python アドバイザリのサブセットでのみ使用できます。 GitHub では、追加の履歴 Python アドバイザリ間でデータをバックフィルする作業を行っています。このアドバイザリは、ローリング ベースで追加されます。 脆弱性のある呼び出しは、Dependabot alerts ページでのみ強調表示されます。
検索フィールドで has:vulnerable-calls
フィルターを使用して、Dependabot で脆弱性のある関数の呼び出しが少なくとも 1 回検出されたアラートのみを表示するように、ビューをフィルター処理できます。
脆弱性のある呼び出しが検出されたアラートについて、アラートの詳細ページに追加情報が表示されます。
- 関数が使用される場所を示す 1 つ以上のコード ブロック。
- 関数自体を一覧表示する注釈。関数が呼び出される行へのリンクを含みます。
詳しい情報については、以下の「アラートの確認と修正」を参照してください。
Dependabot alerts の表示
リポジトリのDependabot alertsタブの開いた・閉じたすべてのDependabot alertsおよび対応するDependabot security updatesを表示できます。 ドロップダウン メニューからフィルターを選択することで、Dependabot alerts を並べ替えてフィルター処理できます。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。
-
セキュリティの概要の [脆弱性アラート] サイド バーで、 [Dependabot] をクリックします。 このオプションがない場合は、セキュリティ アラートにアクセスできないため、アクセス権を付与する必要があることを意味します。 詳細については、「リポジトリのセキュリティと分析設定を管理する」を参照してください。
-
必要に応じて、アラートをフィルター処理するには、ドロップダウン メニューでフィルターを選び、適用するフィルターをクリックします。 検索バーにフィルターを入力することもできます。 または、ラベルでフィルター処理する場合、アラートに割り当てられているラベルをクリックすると、そのフィルターがアラート一覧に自動的に適用されます。 アラートのフィルター処理と並べ替えについて詳しくは、「Dependabot alertsの優先順位付け」を参照してください。
-
表示するアラートをクリックします。
-
必要に応じて、関連するセキュリティ アドバイザリの改善を提案するには、アラート詳細ページの右側にある [GitHub Advisory Database でこのアドバイザリの改善を提案する] をクリックします。 詳しくは、「GitHub Advisory Database でのセキュリティ アドバイザリの編集」を参照してください。
アラートの確認と修正
すべての依存関係にセキュリティ上の弱点がないことを確認することが重要です。 Dependabot で依存関係の脆弱性が検出された場合は、プロジェクトの露出レベルを評価し、アプリケーションをセキュリティで保護するために実行する修復手順を決定する必要があります。
依存関係の修正プログラムが適用されたバージョンを利用できる場合は、Dependabot pull request を生成して、Dependabot アラートからこの依存関係を直接更新できます。 Dependabot security updatesが有効になっている場合は、Dependabot アラートで Pull Request がリンクされている可能性があります。
修正プログラムが適用されたバージョンが利用できない場合や、セキュリティで保護されたバージョンに更新できない場合は、Dependabot によって追加情報が共有され、次の手順を決定できます。 Dependabot アラートをクリックして表示すると、影響を受ける関数を含め、依存関係に関するセキュリティ アドバイザリの詳細情報を確認できます。 これにより、自分のコードが、影響を受ける関数を呼び出すかどうかを確認できます。 この情報は、リスク レベルをさらに厳密に評価し、回避策を決定したり、セキュリティ アドバイザリによって表されるリスクを受け入れられるかどうかを判断したりするのに役立ちます。
サポートされている言語では、Dependabot によって脆弱性のある関数の呼び出しが検出されます。 "脆弱性のある呼び出し" ラベルを持つアラートを表示すると、詳細情報には関数の名前と、それを呼び出すコードへのリンクが含まれます。 多くの場合、さらに詳細を確認せずに、この情報に基づいて決定を下すことができます。
脆弱性のある依存関係を修正する
-
アラートの詳細を表示します。 詳しい情報については、「Dependabot alerts の表示」 (上記) を参照してください。
-
Dependabot security updatesが有効になっている場合は、依存関係を修正する Pull Request へのリンクが存在する可能性があります。 または、アラートの詳細ページの上部にある [Dependabot セキュリティ更新プログラムを作成する] をクリックして Pull Request を作成することもできます。
-
Dependabot security updatesを使用しない場合は、必要に応じて、ページの情報を使用してアップグレード先の依存関係のバージョンを決定し、セキュリティで保護されたバージョンに依存関係を更新する Pull Request を作成することができます。
-
依存関係を更新して脆弱性を解決する準備ができたら、プルリクエストをマージしてください。
Dependabot によって発行される各プル リクエストには、Dependabot の制御に使用できるコマンドの情報が含まれています。 詳しくは、「依存関係の更新に関するPull Requestを管理する」を参照してください。
Dependabot alertsを無視する
ヒント: 無視できるのは、オープン アラートのみです。
依存関係をアップグレードするための広範な作業をスケジュールする場合や、アラートを修正する必要がないと判断した場合は、アラートを無視できます。 既に評価済みのアラートを無視すると、新しいアラートが表示されたときに簡単にトリアージできます。
-
アラートの詳細を表示します。 詳細については、「脆弱性のある依存関係を表示する」(上記) を参照してください。
-
[無視する] ドロップダウンを選び、アラートを無視する理由をクリックします。 修正されていない無視されたアラートは、後で再度開くことができます。
-
必要に応じて、無視のコメントを追加します。 無視のコメントはアラート タイムラインに追加され、監査と報告の間に正当な理由として使用できます。 GraphQL API を使用して、コメントを取得または設定できます。 コメントは
dismissComment
フィールドに含まれています。 詳しくは、GraphQL API ドキュメントの「オブジェクト」を参照してください。 -
[アラートを無視] をクリックします。
複数のアラートを一度に却下する
- オープンの Dependabot alerts を表示します。 詳しくは、「Dependabot アラートの表示と更新」をご覧ください。
- 必要に応じて、ドロップダウン メニューを選び、適用するフィルターをクリックして、アラートの一覧をフィルター処理します。 検索バーにフィルターを入力することもできます。
- 各アラートのタイトルの左側で、無視するアラートを選びます。
- 必要に応じて、アラートの一覧の上部で、ページ上のすべてのアラートを選びます。
- [アラートを無視する] ドロップダウンを選び、アラートを無視する理由をクリックします。
クローズされたアラートの表示と更新
開いているすべてのアラートを表示し、以前に却下したアラートをもう一度開くことができます。 既に修復済みのクローズされたアラートをもう一度開くことはできません。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。
-
セキュリティの概要の [脆弱性アラート] サイド バーで、 [Dependabot] をクリックします。 このオプションがない場合は、セキュリティ アラートにアクセスできないため、アクセス権を付与する必要があることを意味します。 詳細については、「リポジトリのセキュリティと分析設定を管理する」を参照してください。
-
クローズされたアラートのみを表示するには、 [Closed] をクリックします。
-
表示または更新するアラートをクリックします。
-
必要に応じて、却下されたアラートを再度開く場合は、 [Reopen] をクリックします。 既に修正されたアラートをもう一度開くことはできません。
一度に複数のアラートをもう一度開く
- クローズされた Dependabot alerts を表示します。 詳しくは、(上の) 「Dependabot アラートの表示と更新」をご覧ください。
- 各アラート タイトルの左で、各アラートの隣にあるチェックボックスをクリックし、再開するアラートを選びます。
- 必要に応じて、アラートの一覧の上部で、ページ上のすべてのクローズされたアラートを選びます。
- [再度開く] をクリックして、アラートをもう一度開きます。 既に修正されたアラートをもう一度開くことはできません。
Dependabot alerts の監査ログの確認
組織のメンバーが Dependabot alerts に関連するアクションを実行した場合は、監査ログでそのアクションを確認できます。 ログ アクセスの詳細については、「Organization の Audit log をレビューする。"
Dependabot alerts に関する監査ログのイベントには、だれがアクションを実行したか、何のアクションか、いつアクションを実行したか、などの詳細が含まれます。 イベントには、アラート自体へのリンクも含まれています。 組織のメンバーがアラートを無視すると、イベントに無視の理由とコメントが表示されます。 Dependabot alerts アクションの詳細については、「組織の監査ログ イベント。"