脆弱性スキャンとは?
脆弱性スキャンは、ソフトウェアを既知のセキュリティ欠陥(CVE)のデータベースと照合し、どれがあなたに影響するかを報告します。
新たな脆弱性は絶えず公開されています。脆弱性スキャンはそのチェックを自動化します。手元にあるもの(依存関係、OSパッケージ、コンテナのレイヤー)をインベントリ化し、advisoryデータベースと照合することで、攻撃者より先に既知の問題を見つけられます。
スキャンされるもの
- 依存関係:あなたのライブラリ(ソフトウェアコンポジション解析)。
- コンテナimage:image内のOSパッケージとレイヤー。
- インフラと構成:構成ミスや既知の不適切な設定。
小さな例
CIでtrivy image myapp:latestを実行すると、image内のOSパッケージとライブラリを列挙し、CVEフィードと照合し、各検出結果を深刻度と修正済みバージョンとともに出力します。深刻度の高いものでゲートしていれば、buildを失敗させます。
深刻度とゲート
検出結果には深刻度が付き、多くの場合CVSSスコアが伴います。CIでは通常、深刻度でゲートします。たとえば、新たなcriticalまたはhighの検出でbuildを失敗させつつ、それより低いものは警告とともに通します。
ノイズの管理
スキャンは誤検知や、到達不能な脆弱性を生み出します。当てはまらない検出を無視し、深刻度と悪用可能性で優先順位を付け、差分を追跡してバックログを蒸し返すのではなく新しいものに対応することで調整します。
スキャンし、そして再スキャンする
今日クリーンなスキャンが、永遠にクリーンなわけではありません。変わっていないartifactに対して新たなCVEが出てきます。デプロイ済みのimageを定期的に再スキャンするようスケジュールし、すでに出荷したソフトウェア内の新たに公開された脆弱性も捕捉できるようにします。
重要なポイント
- 脆弱性スキャンは、ソフトウェアを既知のCVEデータベースと照合します。
- 依存関係、コンテナimage、構成をカバーします。
- CIは深刻度でゲートします。新たなCVEが出たらデプロイ済みのartifactを再スキャンします。
関連ガイド
What Is Dependency Scanning?Dependency scanning checks your third-party libraries against databases of known vulnerabilities. Learn how i…
What Is SAST?SAST is static application security testing - analyzing source code for security flaws without running it. Le…
What Is Supply Chain Security?Supply chain security protects everything that goes into your software - dependencies, build tools, pipelines…