依存関係スキャンとは?
依存関係スキャンは、プロジェクトが取り込むサードパーティライブラリを既知の脆弱性データベースと照合し、アップグレードが必要なものを検出します。
アプリケーションの大部分は、あなたが書いていないコード、つまりオープンソースの依存関係です。そのうちの1つに脆弱性が見つかると、あなたはそれを引き継ぐことになります。依存関係スキャン(ソフトウェアコンポジション解析の一形態)は、どの依存関係が影響を受けているかを教えてくれます。
仕組み
スキャナーはlockfileを読み取り、推移的なものも含めた正確な依存関係のバージョンを列挙し、GitHub Advisory DatabaseやOSVといった脆弱性データベースと照合します。一致したものは、深刻度と修正済みバージョンを伴うアラートになります。
直接依存と推移的依存
脆弱なパッケージは、多くの場合あなたが直接importしていないもの、つまり依存関係の依存関係です。lockfileから解決された依存関係ツリー全体をスキャンすることで、こうした推移的なリスクを検出できます。
小さな例
スキャナーが、あなたが一度もimportしていないloggingライブラリに深刻度の高いCVEを報告します。それはwebフレームワークを経由して推移的に入り込んだものです。アラートは修正済みバージョンを示すため、フレームワークをアップグレードするか、その推移的依存をpinで固定します。
結果への対応
- 修正済みバージョンにアップグレードする。理想的にはbotで自動的に行う。
- 修正済みの推移的バージョンが存在する場合はオーバーライドを適用する。
- 修正が存在しない場合は、トリアージし、文書化した理由とともにリスクを受容する。
実用的に保つ
バックログ全体ではなく、新規かつ深刻度の高い検出結果でゲートし、スキャンをアップデートbotと組み合わせます。そうすれば、脆弱な依存関係の大部分はbuildをブロックする前に自動的にアップグレードされます。
重要なポイント
- 依存関係スキャンは、ライブラリを既知のCVEデータベースと照合します。
- lockfileを読み取り、直接依存だけでなく推移的な依存も検出します。
- アップグレード、オーバーライド、または受容したリスクの文書化によって対処します。
関連ガイド
What Is a Vulnerability Scan?A vulnerability scan checks your code, dependencies, or images against databases of known security flaws. Lea…
What Is an SBOM?An SBOM is a software bill of materials - a complete inventory of every component in your build. Learn the fo…
What Is Supply Chain Security?Supply chain security protects everything that goes into your software - dependencies, build tools, pipelines…