Skip to content
Latchkey

依存関係スキャンとは?

依存関係スキャンは、プロジェクトが取り込むサードパーティライブラリを既知の脆弱性データベースと照合し、アップグレードが必要なものを検出します。

アプリケーションの大部分は、あなたが書いていないコード、つまりオープンソースの依存関係です。そのうちの1つに脆弱性が見つかると、あなたはそれを引き継ぐことになります。依存関係スキャン(ソフトウェアコンポジション解析の一形態)は、どの依存関係が影響を受けているかを教えてくれます。

仕組み

スキャナーはlockfileを読み取り、推移的なものも含めた正確な依存関係のバージョンを列挙し、GitHub Advisory DatabaseやOSVといった脆弱性データベースと照合します。一致したものは、深刻度と修正済みバージョンを伴うアラートになります。

直接依存と推移的依存

脆弱なパッケージは、多くの場合あなたが直接importしていないもの、つまり依存関係の依存関係です。lockfileから解決された依存関係ツリー全体をスキャンすることで、こうした推移的なリスクを検出できます。

小さな例

スキャナーが、あなたが一度もimportしていないloggingライブラリに深刻度の高いCVEを報告します。それはwebフレームワークを経由して推移的に入り込んだものです。アラートは修正済みバージョンを示すため、フレームワークをアップグレードするか、その推移的依存をpinで固定します。

結果への対応

  • 修正済みバージョンにアップグレードする。理想的にはbotで自動的に行う。
  • 修正済みの推移的バージョンが存在する場合はオーバーライドを適用する。
  • 修正が存在しない場合は、トリアージし、文書化した理由とともにリスクを受容する。

実用的に保つ

バックログ全体ではなく、新規かつ深刻度の高い検出結果でゲートし、スキャンをアップデートbotと組み合わせます。そうすれば、脆弱な依存関係の大部分はbuildをブロックする前に自動的にアップグレードされます。

重要なポイント

  • 依存関係スキャンは、ライブラリを既知のCVEデータベースと照合します。
  • lockfileを読み取り、直接依存だけでなく推移的な依存も検出します。
  • アップグレード、オーバーライド、または受容したリスクの文書化によって対処します。

関連ガイド