Skip to main content

Dependabotアラートの表示と更新

GitHub がプロジェクト内の安全ではない依存関係を発見した場合は、詳細をリポジトリのDependabot alertsタブで確認できます。 その後、プロジェクトを更新してこのアラートを解決もしくは却下できます。

Repository administrators and organization owners can view and update dependencies, as well as users and teams with explicit access.

リポジトリのDependabotアラートタブには、オープン及びクローズされたすべてのDependabotアラート及び対応するDependabotセキュリティアップデートがリストされます。 アラートはパッケージ、エコシステム、マニフェストでフィルタリングできます。 また、アラートのリストはソートでき、特定のアラートをクリックして詳細を見ていくことができます。 アラートを1つずつ、あるいは複数のアラートをまとめて選択して、却下したり再オープンしたりできます。 詳しい情報については、「Dependabotアラート について」を参照してください。

Dependabotアラート と依存関係グラフを使用するリポジトリの自動セキュリティ更新を有効にすることができます。 詳しい情報については、「Dependabotセキュリティアップデート について」を参照してください。

リポジトリ内の脆弱性のある依存関係の更新について

コードベースが既知のセキュリティリスクのある依存関係を使用していることを検出すると、GitHub は Dependabotアラート を生成します。 Dependabotセキュリティアップデート が有効になっているリポジトリの場合、GitHub がデフォルトのブランチで脆弱性のある依存関係を検出すると、Dependabot はそれを修正するためのプルリクエストを作成します。 プルリクエストは、脆弱性を回避するために必要最低限の安全なバージョンに依存関係をアップグレードします。

デフォルトでは、Dependabotアラートは重要度の順にDependabotアラートタブに表示されますが、他の基準でアラートをソートできます。 Dependabotアラートタブのドロップダウンメニューを使って、あるいはフィルタを検索バーでkey:valueペアを入力することによってDependabotアラートをソート及びフィルタリングしたりできます。 利用可能なフィルタは、リポジトリ(たとえばrepo:my-repository)、パッケージ(たとえばpackage:django)、エコシステム(たとえばecosystem:npm)、マニフェスト(たとえばmanifest:webwolf/pom.xml)、状態(たとえばis:open)、アドバイザリがパッチを持っているか(たとえばhas: patch)です。たとえばscope:developmentあるいはscope:runtimeというように、scopeを使って依存関係のスコープデータでアラートをフィルタすることもできます。 scope:developmentを指定すると、アラートのリストは実働ではなく開発の間に使われた依存関係だけを表示します。

それぞれのDependabotアラートは一意の数値識別子を持っており、Dependabotアラートタブにはすべての検出された脆弱性に対するアラートがリストされます。 旧来のDependabotアラートは依存関係で脆弱性をグループ化し、依存関係ごとに1つのアラートを生成しました。 旧来のDependabotアラートにアクセスすると、そのパッケージでフィルタされたDependabotアラートタブにリダイレクトされます。

依存関係のスコープに対してサポートされているエコシステムとマニフェスト

以下の表は、依存関係のスコープが様々なエコシステム及びマニフェストでサポートされているか、すなわちDependabotが依存関係が開発もしくは実働で利用されているかを特定できるかをまとめたものです。

言語エコシステムマニフェストファイル依存関係スコープがサポートされているか
GoGoモジュールgo.modいいえ。デフォルトはランタイム
GoGoモジュールgo.sumいいえ。デフォルトはランタイム
JavaMavenpom.xmltestは開発にマップされ、そうでなければスコープはデフォルトでランタイム
JavaScriptnpmpackage.json
JavaScriptnpmpackage-lock.json
JavaScriptyarn v1yarn.lockいいえ。デフォルトはランタイム
PHPComposercomposer.json
PHPComposercomposer.lock
PythonPoetrypoetry.lock
PythonPoetrypyproject.toml
Pythonpiprequirements.txt✔ スコープは、ファイル名にtestあるいはdevが含まれていれば開発、そうでなければランタイム
Pythonpippipfile.lock
Pythonpippipfile
RubyRubyGemsGemfile
RubyRubyGemsGemfile.lockいいえ。デフォルトはランタイム
RustCargoCargo.toml
RustCargoCargo.lockいいえ。デフォルトはランタイム
YAMLGitHub Actions-いいえ。デフォルトはランタイム
.NET (C#、F#、VBなど)NuGet.csproj / .vbproj .vcxproj / .fsprojいいえ。デフォルトはランタイム
.NETNuGetpackages.configいいえ。デフォルトはランタイム
.NETNuGet.nuspec✔ tag != runtimeの場合

開発時の依存関係としてリストされているパッケージに対するアラートは、Dependabotアラートのページ上でDevelopmentラベルでマークされており、scopeフィルタでフィルタリングすることもできます。 アラートのリスト内の"Development"を表示しているスクリーンショット

開発スコープのパッケージに対するアラートの詳細ページには、Developmentラベルを含むTags"セクションが表示されます。 アラートの詳細ページ内の"Tags"セクションを表示しているスクリーンショット

脆弱性のある関数の呼び出しの検出について

ノート:

  • The detection of calls to vulnerable functions by Dependabot is in beta and subject to change.

  • Detection of vulnerable calls is enabled on public repositories. This analysis is also available in private repositories owned by organizations that use GitHub Enterprise Cloud and have licensed GitHub Advanced Security. 詳しい情報については、「GitHub Advanced Security について」を参照してください。

Dependabotが、リポジトリが脆弱性のある依存関係を使っていることを知らせてきた場合、どの機能が脆弱性を持っているかを判断し、それらを使っているかどうかをチェックしなければなりません。 この情報が得られたら、依存関係のセキュアなバージョンへのアップグレードの必要性の緊急度が判断できます。

サポートされている言語については、Dependabotは自動的に脆弱性のある関数を使っているかを自動的に検出し、影響されているアラートに"Vulnerable call(脆弱性のある呼び出し)" というラベルを追加します。 Dependabotアラートビュー内のこの情報を使って、修復作業をより効率的にトリアージして優先順位付けできます。

ノート: ベータリリースの間、この機能は2022年4月14日以降に生成された新規のPythonアドバイザリと、過去のPythonのアドバイザリの一部に対してのみ有効です。 GitHubは、さらなる過去のPythonアドバイザリにさかのぼってデータを加えていっています。これは、随時追加されていっています。 脆弱性のある呼び出しは、Dependabotアラートページ上でのみハイライトされます。

"Vulnerable call"ラベルの付いたアラート表示のスクリーンショット

検索フィールドでhas:vulnerable-callsフィルタを使い、少なくとも1つの脆弱性のある関数の呼び出しをDependabotが検出したところでだけアラートを表示するよう、ビューをフィルタリングできます。

脆弱性のある呼び出しが検出されたアラートについては、アラートの詳細ページに追加情報が表示されます。

  • 関数が使用されている場所を示す1つ以上のコードブロック。
  • 関数自体をリストしているアノテーション。関数が呼ばれている行へのリンク付きで。

"Vulnerable call"ラベルの付いたアラートのアラート詳細ページを表示しているスクリーンショット

詳しい情報については、下の「アラートのレビューと修正」を参照してください。

Dependabotアラートの表示

  1. GitHub.comで、リポジトリのメインページにアクセスしてください。

  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ

  3. セキュリティサイドバーで、Dependabotアラートをクリックしてください。 If this option is missing, it means you don't have access to security alerts and need to be given access. For more information, see "Managing security and analysis settings for your repository." Dependabotアラート tab

  4. あるいは、アラートをフィルタリングするには、Repository(リポジトリ)Package(パッケージ)Ecosystem(エコシステム)Manifest(マニフェスト)ドロップダウンメニューを選択し、続いて適用したいフィルタをクリックしてください。 検索バーにフィルタを入力することもできます。 たとえばecosystem:npmhas:patchscope:development。 アラートをソートするには、Sort(ソート)ドロップダウンメニューを選択し、ソートの基準にしたいオプションをクリックするか、検索バーにsort:と入力してから、候補(たとえばsort:newest)から選択肢を選んでください。

    ノート: デフォルトでは、Dependabotアラートは重要度でソートされています。 "Most important(重要な順)"ソートは、まず焦点を置くべきDependabotアラートの優先順位付けを助けてくれます。 アラートは、潜在的な影響、行動可能性、関連性に基づいてランク付けされます。 優先順位の計算は常に改善されており、CSVVスコア、依存関係スコープ、脆弱性のある関数呼び出しがアラートで見つかっているかといった要素を含みます。

    "Most important"ソートのあるソートドロップダウンのスクリーンショット

アラートのラベルをクリックして、その種類のアラートだけを表示させることもできます。たとえば、アラートのリスト内のDevelopmentラベルをクリックすれば、実働ではなく開発で使われている依存関係に関係するアラートだけが表示されます。 サポートされているエコシステムのリストに関する情報については「依存関係スコープでサポートされているエコシステムとマニフェスト」を参照してください。

Dependabotアラートタブ中のフィルタ及びソートメニューのスクリーンショット

  1. 表示したいアラートをクリックしてください。 Alert selected in list of alerts

アラートのレビューと修正

すべての依存関係がセキュリティの弱点を確実に持たないようにすることが重要です。 Dependabotが脆弱性もしくはマルウェアを依存関係に見つけた場合、プロジェクトの露出のレベルを評価し、アプリケーションをセキュアにするための修復ステップを決定しなければなりません。

依存関係のパッチされたバージョンが利用できるなら、Dependabot Pull Requestを生成し、Dependabotアラートから直接その依存関係を更新できます。 Dependabotセキュリティアップデートを有効にしているなら、Pull RequestはDependabotアラートとリンクされるかもしれません。

パッチが適用されたバージョンが利用できない場合、あるいはセキュアなバージョンへ更新できない場合、Dependabotは次のステップを判断するための役に立つ追加情報を共有します。 Dependabotアラートを見るためにクリックしていくと、影響される関数を含む依存関係に対するセキュリティアドバイザリの完全な詳細を見ることができます。 そして、自分のコードが影響を受けた関数を呼び出しているかをチェックできます。 この情報は、リスクレベルをさらに評価し、回避策を決めたり、あるいはそのセキュリティアドバイザリが示すリスクを受け入れることができるかどうかを決めるための役に立ちます。

サポートされている言語では、Dependabotは脆弱性のある関数の呼び出しを検出してくれます。 "Vulnerable call(脆弱性のある呼び出し)"というラベルの付いたアラートを見ると、関数名とそれを呼び出しているコードへのリンクを含む詳細が含まれています。 多くの場合、それ以上調べることなくこの情報に基づいて判断を下すことができるでしょう。

脆弱性のある依存関係の修復

  1. アラートの詳細を表示させます。 詳しい情報については上の「Dependabotアラートの表示」を参照してください。

  2. Dependabotセキュリティアップデートを有効にしているなら、その依存関係を修復するPull Requestへのリンクがあるかもしれません。 あるいは、アラートの詳細ページの上部にあるCreate Dependabot security updateをクリックして、Pull Requestを作成することもできます。 Dependabotのセキュリティアップデートの作成ボタン

  3. あるいは、Dependabotセキュリティアップデートを使っていないなら、ページにある情報を使ってアップグレードすべき依存関係のバージョンを判断し、セキュアなバージョンへ依存関係を更新するためのPull Requestを作成できます。

  4. 依存関係を更新して脆弱性を解決する準備ができたら、プルリクエストをマージしてください。

    Dependabotが発行したそれぞれのPull Requestには、Dependabotの制御に利用できるコマンドに関する情報が含まれています。 詳しい情報については「依存関係の更新のためのPull Requestの管理」を参照してください。

Dependabotアラートの却下

参考: 却下できるのはオープンなアラートのみです。

依存関係のアップグレードのための広汎な作業をスケジュールしていたり、アラートを修正する必要はないと判断したりした場合、アラートを却下できます。 すでに評価済みのアラートを却下すると、新しいアラートが現れたときにトリアージしやすくなります。

  1. アラートの詳細を表示させます。 詳しい情報については上の「脆弱性のある依存関係の表示」を参照してください。
  2. "Dismiss(却下)"ドロップダウンを選択し、アラートを却下する理由をクリックしてください。却下された未修正のアラートは、後で再度オープンできます。 [Dismiss] ドロップダウンでアラートを却下する理由を選択する

複数のアラートを一度に却下する

  1. オープンなDependabotアラートを表示させます。 詳しい情報については「Dependabotアラートの表示」を参照してください。
  2. あるいは、ドロップダウンメニューを選択し、適用したいフィルタをクリックして、アラートのリストをフィルタリングしてください。 検索バーにフィルタを入力することもできます。
  3. それぞれのアラートのタイトルの左で、却下したいアラートを選択してください。 チェックボックスが強調されたオープンなアラートのスクリーンショット
  4. あるいは、アラートのリストの上部で、ページ上のアラートをすべて選択してください。 すべてのオープンなアラートが選択されたスクリーンショット
  5. "Dismiss alerts(アラートを却下)"ドロップダウンを選択し、アラートを却下する理由をクリックしてください。 "Dismiss alerts"ドロップダウンが強調されたオープンなアラートページのスクリーンショット

クローズされたアラートの表示と更新

参考: 再オープンできるアラートは、以前に却下したものだけです。 既に修復済みのクローズされたアラートは、再オープンできません。

  1. GitHub.comで、リポジトリのメインページにアクセスしてください。
  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ
  3. セキュリティサイドバーで、Dependabotアラートをクリックしてください。 If this option is missing, it means you don't have access to security alerts and need to be given access. For more information, see "Managing security and analysis settings for your repository." Dependabotアラート tab
  4. クローズされたアラートを表示だけするなら、Closed(クローズ済み)をクリックしてください。 Screenshot showing the "Closed" option
  5. 表示もしくは更新したいアラートをクリックしてください。 Screenshot showing a highlighted dependabot alert
  6. あるいはアラートが却下されていて、再度オープンしたい場合は、Reopen(再オープン)をクリックしてください。 既に修正済みのアラートは再オープンできません。 "Reopen"ボタンを表示しているスクリーンショット

複数のアラートを一度に再オープンする

  1. クローズされたDependabotアラートを表示してください。 詳しい情報については上の「クローズされたアラートの表示と更新」を参照してください。
  2. それぞれのアラートのタイトルの左で、再オープンしたいアラートを選択してください。 チェックボックスが強調されたクローズ済みアラートのスクリーンショット
  3. あるいは、アラートのリストの上部で、ページ上のクローズされたアラートをすべて選択してください。 すべてのアラートが選択されたクローズ済みアラートのスクリーンショット
  4. Reopen(再オープン)をクリックして、アラートを再オープンしてください。 既に修正済みのアラートは再オープンできません。 "Reopen"ボタンが強調されたクローズ済みアラートのスクリーンショット