Skip to main content
Skip to content

Dependabot アラートの到達可能性分析について

Reachability analysis は、アプリケーションが脆弱な依存関係コードに到達できるかどうかを識別することで、 Dependabot alerts に優先順位を付けるのに役立ちます。

この機能を使用できるユーザーについて

Reachability analysisは、GitHub Enterprise Cloudを利用する企業を含む、データ所在地上のパブリック、プライベート、および内部リポジトリで使用できます。 1 つの GitHub Code Security ライセンスは必要ありません。

脆弱な依存関係があるからといって、アプリケーションが影響を受ける関数を呼び出すとは限りません。 Reachability analysis では、コードでの依存関係の使用方法に基づいて修正プログラムの優先順位を付けるのに役立つ、各 Dependabot アラートに判定が追加されます。

メモ

Dependabot alerts向けのReachability analysisはパブリック プレビューであり、変更される可能性があります。

reachability analysis の動作のしくみ

Reachability analysis は、開いている Dependabot alerts を分析して、アプリケーションが脆弱な関数を呼び出すことができるかどうかを判断します。 CodeQL静的解析と、影響を受ける関数として特定された関数に関するキュレーション済みデータを使用して、コードからそれらの関数への呼び出しパスを検索します。

分析された各 Dependabot アラートには、優先度を決定するのに役立つ 判定 が付与されます。 利用可能な場合、コールパスの証跡は、コードが脆弱な関数に到達する経路を示しているため、アラートがアプリケーションにとって重要な理由を理解できます。

要件とサポートされているエコシステム

Reachability analysis では、npm、pnpm、または Yarn を使用する JavaScript リポジトリと、TypeScript リポジトリがサポートされています。 リポジトリには、 package-lock.json、 pnpm-lock.yaml、 yarn.lockなどのロック ファイルが必要です。

Dependabot alerts は、 reachability analysis が機能するために有効になっている必要があります。

分析は、GitHubでホストされるランナーで実行されます。 セルフホステッド ランナーはサポートされていません。

到達可能性の判定

重大度、Exploit Prediction Scoring System (EPSS) スコア、依存関係スコープ、依存関係と共に到達可能性を使用して、最初に対処するアラートを決定します。

判決Meaning推奨される応答
到達可能分析により、リポジトリのコードから脆弱な関数への呼び出しパスが少なくとも 1 つ見つかりました。修正に優先順位を付け、コールパスのエビデンスを確認してください。
到達可能性がある分析では、脆弱な関数の呼び出しの可能性を排除できませんでした。 この不確実性は、サポートされていないエコシステムやスキャンの失敗によって引き起こされるものではありません。 複数のマニフェストを含むリポジトリでは、マニフェストのディレクトリの外部でのみ検出された呼び出しは、到達可能性があると見なされます。到達可能なアラートと併せて、修正の優先順位を決定します。
アクセス不可分析が完了し、アプリケーションのコードから脆弱な関数への呼び出しが見つかりませんでした。アラートの優先度を低くしますが、この判定のためだけに無視したり閉じたりしないでください。
Reachabilityは利用できません分析では、たとえば、アラートがサポートされていないエコシステム用であるか、スキャンが失敗またはタイムアウトしたため、判定を提供できませんでした。他の優先順位付けシグナルを使用してアラートをトリアージします。

到達可能性を使用して、アラートをクローズするのではなく、優先順位付けします

Reachability analysis は、修復の優先順位付けに役立つ既存の開いているアラートに情報を追加します。 新しい脆弱性を見つけたり、アラートを自動的にクローズまたは却下したりすることはありません。

判定は、ポイントインタイム評価です。 到達可能性の判定のみに基づいてアラートを閉じたり、非表示にしたりしないでください。現在、コードから関数に到達できない可能性がある一方で、コードの変更やアドバイザリの更新によって、後のスキャンの結果が変わる可能性があります。

到達可能性は悪用可能性ではありません

到達可能な関数は、必ずしも悪用できるとは限りません。 到達可能性は、攻撃者がこの脆弱性を悪用できることを示すのではなく、呼び出しパスが存在することを示しています。

同様に、"到達不能" の判定は、依存関係が安全であるという保証ではありません。 引き続きこれらのアラートを確認し、依存関係を最新の状態に保ってください。

呼び出しパスのエビデンス

到達可能なアラートの場合、コールパスの証跡は、コード内の呼び出しが脆弱な関数に到達する経路を示します。 この情報を使用して、影響を受ける依存関係をアプリケーションがどこで使用しているかを把握し、対処を計画します。

アラートには、最大 5 つのサンプル パスを表示できます。 これらのサンプルは、考えられるすべての呼び出しパスの完全な一覧ではありません。

結果が更新されるタイミングを理解する

reachability analysisを有効にすると、リポジトリの開いているアラートの初期スキャンが開始されます。 その後、スキャンはリポジトリに未解決のアラートがある間、24 時間ごとに実行されます。 各スキャンでは、開いているすべてのアラートが対象です。

コード変更をプッシュしてもスキャンはトリガーされません。 コードを変更した後、その後のスキャンが完了するまで、判定はそれらの変更を反映しません。

パブリック プレビュー中は、オンデマンド スキャンをスケジュールしたりトリガーしたりすることはできません。

スキャン期間は、リポジトリのサイズと依存関係によって異なります。 スキャンは数分で完了しますが、大規模なスキャンではさらに時間がかかります。 パブリック プレビュー中、スキャンには 3 時間の制限があります。

パブリック プレビュー 中の請求と使用状況

Reachability analysisは、パブリック プレビューです****。 そのスキャンでは、課金 GitHub Actions 分は消費されません。

既知の制限

Reachability analysis には、 パブリック プレビュー中に次の制限があります。

  • エコシステムのサポート: サポートされている JavaScript および TypeScript エコシステム以外のアラートはサポートされていません。
  • 大規模なリポジトリと monorepos: 一部のリポジトリは、3 時間のスキャン制限に達したり、リソースの制限に達したりして、結果を利用できなくなります。

REST API を使用した verdicts の利用

Dependabot alerts REST API は、reachability analysisの判定を提供します。 リポジトリ、組織、エンタープライズ アラート エンドポイントを通じて判定を取得できます。 「Dependabot alerts の REST API エンドポイント」を参照してください。

次のステップ

リポジトリの reachability analysis を有効にするには、 Dependabot アラートの到達可能性分析の構成 を参照してください。