脆弱性トラッキング
出荷するソフトウェアのすべての既知の脆弱性を、それを取り込んだビルドから、修正したリリースまで追跡します。CRACIはすべてのビルドのSBOMを記録し、新たな脆弱性データと照らして確認し続け、各検出結果を修正を担当するチームに割り当てます。
脆弱性トラッキングとは?
脆弱性トラッキングとは、ソフトウェアに影響するすべての既知の脆弱性について、発見から修正または除外までを継続的に記録することです。脆弱性ごとに、どこにあるか、どの製品とリリースに含まれるか、誰が修正を担当するか、ステータスはどうか、という4つの問いに答えます。
多くのツールは、事後にマニフェストとロックファイルをスキャンして最初の問いに答え、残りはスプレッドシートやチケットに任せています。CRACIはもっと早い段階から始めます。GitHub ActionsのジョブはCRACIのランナーで実行され、その実行中に、CIキャッシュから復元されたパッケージを含め、ビルドが実際に取り込んだすべてのパッケージをCRACIが記録します。CRACIが監視するのはこのビルド時SBOMであるため、追跡する脆弱性は、どこか近くで実行されたスキャンの結果ではなく、実際に出荷した成果物に含まれるものです。
IT資産だけでなく、出荷するソフトウェアを追跡
ほとんどの脆弱性トラッキングツールはIT向けに作られています。サーバー、ノートPC、クラウドアカウントをスキャンし、修正は誰かがインストールするパッチです。自社でビルドして販売するソフトウェアには、別の記録が必要です。脆弱なコードはリリースの中にあり、修正は新しいビルドであり、顧客や当局はどのバージョンがどれだけの期間影響を受けたかを尋ねてきます。
CRACIが保持するのはまさにその記録です。すべてのビルドのSBOM、それがデプロイされた製品とバージョン、購入したベンダーのコンポーネント、そしてそのすべてにわたる各脆弱性のステータスです。
出荷したものを継続的に再評価
CRACIは各ビルドの実行中にSBOMを記録し、その後も監視対象のSBOMを脆弱性データと照らして再評価し続けます。リリースから長い時間が経ってから公開された脆弱性も、誰かがスキャンを再実行しなくても、影響を受けるリリースに対して表示されます。
ビルドとリポジトリをまたいだ1つのビュー
検出結果はビルドとリポジトリをまたいで集約され、デフォルトブランチについては組織全体のビューが用意されています。インベントリビューでは、どのソフトウェアバージョンがどの製品にデプロイされているかが正確にわかり、ビルド履歴からは脆弱な依存関係を含んでいた過去のビルドがわかるため、どの製品がどれだけの期間影響を受けていたかを把握できます。
トリアージと担当チームへの割り当て
セキュリティチームは発見された脆弱性をトリアージし、修正を担当するチームに送ります。これにより、各検出結果が対応できる人に届きます。CRACIは、脆弱性が自社製品にどう影響するかを記録するためのVEXにも対応しており、ポリシーゲートで特定のCVEを含むビルドをブロックできます。
ベンダーのSBOMも自社のものと並べて追跡
ベンダーのSBOMを追加すれば、購入したコンポーネントも自社でビルドするソフトウェアと並べて監視されます。製品に含まれるサードパーティのコードも、自社の依存関係と同じ場所で追跡できます。
検出結果からCRAの通知まで
Cyber Resilience Actについては、CRACIが脆弱性の通知、つまり早期警告、通知、最終報告の内容を準備し、お客様がそれを提出します。SBOMは、コンポーネントで見つかった脆弱性とともにCycloneDXまたはSPDXでエクスポートでき、監査、顧客、自社の記録に使えます。
すべての脆弱なパッケージと、それを取り込んでいるもの
各ビルドは、パッケージをバージョン、パッケージURL、ライセンス、脆弱性ステータスとともに一覧表示し、SBOMが完全かどうかを示します。パッケージを開くと、重大度付きのアドバイザリと、そのパッケージを必要としているパッケージが表示されます。
CRACIにおける脆弱性トラッキングのライフサイクル
- 発見。各ビルドは完全性の状態付きのSBOMを生成し、推移的依存関係を含めてCycloneDXまたはSPDXでエクスポートされます。自社とベンダーの監視対象SBOMは、脆弱性データと照らして継続的に再評価されます。
- 特定。ビルドとリポジトリをまたいだ組織ビュー、インベントリビュー、ビルド履歴から、どの製品とバージョンがいつから影響を受けているかがわかります。
- 優先順位付けとトリアージ。各アドバイザリには重大度が表示されます。セキュリティチームは各検出結果をトリアージし、脆弱性が自社製品にどう影響するかをVEXで記録できます。
- 修正。各検出結果は修正を担当するチームに送られ、「Required by」で推移的な脆弱性を取り込んでいるパッケージがわかります。ポリシーゲートで特定のCVEを後のビルドから締め出せます。
- 検証。次のビルドのSBOMで脆弱なバージョンがなくなったかどうかがわかるため、記録は修正済みリリースまでつながります。
- 報告。CRACIはお客様が提出するCRAの脆弱性通知の内容を準備し、SBOMはコンポーネントで見つかった脆弱性とともにエクスポートされます。
脆弱性ごとに追跡すべき項目
- 脆弱性
- アドバイザリとそのID(CVE、GHSAなど)、および重大度。
- コンポーネント
- パッケージと正確なバージョン、直接の依存関係か推移的依存関係か。
- 経路
- 脆弱なパッケージを取り込んでいるパッケージ。何をアップグレードすべきかがわかります。
- 影響範囲
- どの製品、リリース、ビルドに含まれているか、いつからか。
- 担当者
- 修正に責任を持つチーム。
- ステータス
- 未対応、調査中、影響なし、修正済み。理想的にはVEXとして記録します。
- エビデンス
- 脆弱なバージョンを含まなくなったビルドまたはリリース。
トラッキングが機能しているかを示す指標
セキュリティチームは通常、次の4つの数値を報告します。
- 平均修正時間(MTTR):脆弱性が発見されてから、それを含まないリリースが出るまでにかかる時間。
- 修正期限の遵守率:重大度に応じてポリシーで定めた期限内に修正された脆弱性の割合。
- バックログの推移:未対応の脆弱性の数が増えているか減っているか。
- 露出期間:各製品が脆弱なバージョンを出荷していた期間。CRACIのビルド履歴から脆弱な依存関係を含んでいたビルドがわかるため、影響を受けていた期間を把握できます。
CRACIが現在対応していないこと
CRACIは到達可能性分析を提供していないため、自社のコードが脆弱な関数を呼び出しているかどうかで検出結果を順位付けすることはありません。MTTR、期限の遵守率、バックログの推移などの修正指標は表示しません。現在は重大度のしきい値によるアラートには対応しておらず、アラートの対象はエグレスポリシー違反です。検出結果へのコメント、リリース間の差分、しきい値アラート、脆弱性のWebhookはロードマップに掲載されています。
VEX:実際に製品に影響する脆弱性はどれか
SBOMに脆弱なコンポーネントがあっても、製品が脆弱であるとは限りません。影響を受けるコードが出荷物に含まれていない場合や、攻撃に必要な形では到達できない場合があります。VEX(Vulnerability Exploitability eXchange)は、それを機械可読な形で示す方法です。各VEXステートメントは、製品、脆弱性、ステータスを結び付けます。標準のステータスは、影響なし、影響あり、修正済み、調査中です。
これは、顧客や当局が自社のSBOMを脆弱性データベースと照合するようになると重要になります。VEXステートメントがなければ、一致したものはすべて未解決の問題に見え、チームは同じ誤検知の説明を何度も繰り返すことになります。CRACIは、脆弱性が自社製品にどう影響するかを記録するためのVEXに、各検出結果を修正担当チームに送るトリアージとあわせて対応しています。
追いかけるべき量がどれほどか気になりますか?1日に公開されるCVEの数と、HighとCriticalの脆弱性の件数がどれだけ増えたかをご覧ください。
脆弱性トラッキングの解説
自社でビルドするソフトウェアと購入するソフトウェアの脆弱性トラッキングに関するよくあるご質問
脆弱性トラッキングとは何ですか?
脆弱性トラッキングとは、ソフトウェアに影響するすべての既知の脆弱性について、発見された時点から修正または除外されるまでを継続的に記録することです。どのコンポーネントのどのバージョンにあるか、どの製品とリリースに含まれるか、誰が修正を担当するか、ステータスはどうかを記録します。出荷するソフトウェアの場合、その出発点は正確なコンポーネント一覧であり、それを提供するのがSBOMです。
脆弱性管理にはどのようなステップがありますか?
一般的なサイクルは5つのステップです。運用または出荷しているものの脆弱性を発見し、優先順位を付け、修正し、修正によって脆弱性が除去されたことを検証し、報告します。トラッキングは各ステップをつなぐもので、発見から修正済みリリースまでの間に検出結果が失われないようにします。CRACIでは、ビルド時SBOMの記録、各検出結果のトリアージ、担当チームへの割り当て、後のビルドに脆弱なバージョンが含まれなくなったことの確認、そしてSBOMのエクスポートとCRAの通知による報告がこれらのステップにあたります。
脆弱性の修正状況はどのように追跡しますか?
すべての脆弱性に担当者とステータスを割り当て、ビルドまたはリリースに脆弱なバージョンが含まれなくなった時点で初めてクローズします。修正にかかる時間、期限を守れているか、未対応のバックログが減っているかを測定します。CRACIでは、各ビルドのSBOMで脆弱なバージョンがまだ含まれているかがわかり、ポリシーゲートで特定のCVEを後のビルドから締め出せます。
SBOMによる脆弱性管理とは何ですか?
SBOMによる脆弱性管理とは、ソフトウェア部品表に記載されたコンポーネントを脆弱性データと照合し、新たな脆弱性が公開されるたびにそれを繰り返すことです。結果の質はSBOMの質で決まります。CRACIはビルドの実行中にSBOMを記録するため、一覧にはCIキャッシュから復元されたパッケージを含め、ビルドが実際に取り込んだものが反映されます。
脆弱性トラッキングと脆弱性スキャンはどう違いますか?
スキャンはある時点のものです。ファイルを読み取り、検出結果を報告して終わります。トラッキングは、検出結果、担当者、ステータスを継続的に保持し、新たな脆弱性が現れるたびに出荷済みのソフトウェアを確認し続けます。CRACIはスキャナーではなくレコーダーです。各ビルドを記録し、その後、監視対象のSBOMを継続的に再評価します。
CRACIはサードパーティソフトウェアの脆弱性も追跡しますか?
はい。ベンダーのSBOMを追加でき、購入したコンポーネントは、CRACIでビルドするソフトウェアと並べて監視されます。
CRACIは既知の脆弱性を含むビルドをブロックできますか?
はい。ポリシーゲートは検出結果に基づいてビルドをブロックでき、特定のCVEを含むビルドもブロックできます。そのため、修正した脆弱性が後のビルドで戻ってくることはありません。
CRACIはどのように脆弱性を通知しますか?
検出結果はCRACIの組織ビューに表示され、セキュリティチームがそこでトリアージして担当チームに送ります。現在のアラートの対象は、エグレスポリシー違反です。しきい値アラートと脆弱性のWebhookは、SlackとTeamsのアラートとともにロードマップに掲載されています。
CRACIはCRAの脆弱性報告を支援しますか?
はい。CRACIはCRAの脆弱性通知、つまり早期警告、通知、最終報告の内容を準備します。提出は、お客様の社内の担当者がSingle Reporting Platformを通じて行います。Cyber Resilience Actへの対応は引き続き製造業者のプロセスですが、CRACIはそのプロセスに必要なサプライチェーンの可視性とエビデンスのかなりの部分を自動化します。
CRACIはVEXに対応していますか?
はい。CRACIはVEX(Vulnerability Exploitability eXchange)に対応しており、既知の脆弱性が自社製品にどう影響するかを、トリアージや修正担当チームへの割り当てとあわせて記録できます。VEXステートメントにより、SBOMで一致した脆弱性が実際に製品に影響するかどうかを顧客や当局に伝えられるため、誤検知を追いかける手間がなくなります。自社のトリアージプロセスへの組み込み方は、デモを予約してご確認ください。
CRACIは到達可能性分析を行いますか?
いいえ。CRACIは到達可能性分析を提供していません。どのビルド、リポジトリ、製品に脆弱なコンポーネントが含まれているかを示し、脆弱性が自社製品にどう影響するかを記録するためのVEXに対応しています。