
Dependabotに到達可能性分析 JS/TSで「実際に呼ばれる脆弱性」を判別
GitHubDependabot脆弱性管理CodeQLnpm
GitHubは10月28日、Dependabotアラートの到達可能性分析をJavaScript/TypeScript向けにパブリックプレビュー提供した。自コードから脆弱な関数への呼び出し経路があるかをCodeQLで解析し、4種の判定を各アラートに表示する。GitHub Enterprise Cloud向けで無料、既定は無効のため有効化が必要。
何が発表されたか
GitHub は 2026年10月28日、Dependabot アラートに対する「到達可能性分析(reachability analysis)」をパブリックプレビューで公開した。対象言語は JavaScript と TypeScript で、リポジトリに npm・Yarn・pnpm のいずれかのロックファイルがあることが条件となる。
自分のコードから依存ライブラリ内の脆弱な関数へ呼び出し経路があるかを調べ、その根拠を各アラート上に表示する。解析は GitHub 管理の Actions ワークフローとして実行されるため、別途インストールするものはない。CodeQL がリポジトリと依存関係をまたいだコールグラフを構築する。
オープンなアラートには次の4つの判定のいずれかが付く。
- Reachable: 脆弱な関数への呼び出し経路が少なくとも1つ存在する
- Potentially reachable: 判断できなかったもの。到達可能として扱う
- Unreachable: 呼び出し経路が見つからなかったもの。優先度は下がる
- Reachability unavailable: 解析できなかったもの。従来どおりトリアージする
判定によってアラートが自動的にクローズまたは却下されることはない。アラート一覧の画面や REST API から判定でのフィルタ・ソートができる。
対象プランは GitHub Enterprise Cloud(データレジデンシー版を含む)。GitHub Advanced Security ライセンスは不要で、この解析にかかる Actions の実行時間も課金されない。
取るべき対応
影響を受けるのは、GitHub Enterprise Cloud 上で JavaScript/TypeScript のリポジトリを運用しているチームだ。該当しない場合でも、依存関係の脆弱性対応の優先順位づけの考え方として押さえておきたい。
- まず有効化が必要。到達可能性分析は既定で無効。Enterprise または Organization のカスタムセキュリティ構成か、リポジトリごとに Settings > Advanced Security から有効にする。前提として Dependabot アラートが有効になっていること。
- 初回スキャンの時間を見込む。最初の実行は数分から数時間かかる場合がある。以降はオープンなアラートがある間、日次で再実行される。
- GitHub ホステッドランナーのみ対応。セルフホストランナーは未対応。モノレポやマニフェストが複数ディレクトリに分かれているリポジトリは未対応の場合があり、解析が3時間を超えると「Reachability unavailable」と表示されることがある。
- 判定だけで優先順位を決めない。GitHub は、深刻度(severity)、EPSS スコア、本番環境での利用状況、自分たちの知見とあわせて判断するよう案内している。「Unreachable」は優先度が下がるという位置づけで、対応不要の意味ではない。
大量のアラートが積み上がって手が回らなくなっているリポジトリから有効にし、Reachable と Potentially reachable を先に片付ける運用に切り替えるのが現実的な使い方になる。
