1. 導入:なぜ今、SSVCが必要なのか
日々発見される膨大な数の脆弱性に対し、すべてを即座に修正することは現実的に不可能です。従来、多くの現場ではCVSSスコア(深刻度)を基準に優先順位を判断してきましたが、これが「本当に対応すべき脆弱性」を見失う原因となっています。スコアが高くても悪用のリスクが低いものや、逆にスコアは中程度でも自社の環境では致命的になるものがあるからです。そこで注目されているのが、具体的な「対応方針」を導き出す評価手法「SSVC」です。
2. 基礎知識:SSVCとCVSSの違い
CVSS(Common Vulnerability Scoring System)は、脆弱性の「深刻度」を0.0~10.0の数値で評価する指標です。あくまで技術的な危険度を示すものですが、その脆弱性が自社にとってどれほど脅威であるかという「文脈」までは考慮されません。
一方、SSVC(Stakeholder-Specific Vulnerability Categorization)は、「誰が」「どのような状況で」対応すべきかという視点を取り入れた意思決定モデルです。決定木(デシジョンツリー)を用いることで、数値ではなく「今すぐ対応するべきか」「次回のメンテナンスまで待つべきか」といった「アクション」を明確に導き出します。
3. 実装/解決策:SSVCの考え方
SSVCの決定木を構成する主な分岐条件(デプロイヤー=システム運用者視点)は以下の4つです。
・Exploitation(悪用状況):実際に悪用コードが存在するか
・Exposure(外部露出度):システムがインターネットに公開されているか
・Utility(有用性):攻撃者にとって攻撃の価値が高いか
・Human Impact(影響度):業務や安全性にどの程度の被害が出るか
これらの条件を順に判定することで、最終的に以下の4つの対応レベルに分類します。
・Immediate(直ちに対応)
・Out-of-cycle(通常業務外で迅速に対応)
・Scheduled(定期メンテナンスで対応)
・Defer(対応を見送り/監視)
4. サンプルプログラム:SSVC判定ロジックの疑似コード
現場で活用する際の思考プロセスを、Python風の疑似コードで表現します。このロジックを自社の脆弱性管理ツールに組み込むことで、自動トリアージの基盤を作ることができます。
// SSVCの簡易判定ロジック例
function evaluateVulnerability(isExploited, isExposed, isHighUtility, isHighHumanImpact) {
// 悪用コードがあり、かつ外部露出している場合
if (isExploited && isExposed) {
return “Immediate: 即時対応が必要です”;
}
// 悪用コードはないが、業務影響が大きい場合
else if (!isExploited && isHighHumanImpact) {
return “Out-of-cycle: 計画的に早期対応してください”;
}
// それ以外で、攻撃価値が高い場合
else if (isHighUtility) {
return “Scheduled: 定期メンテナンス時にパッチ適用”;
}
// どれにも当てはまらない場合
else {
return “Defer: 現時点では対応を見送り、監視を継続”;
}
}
// 使用例
print(evaluateVulnerability(true, true, true, true)); // 結果: Immediate
5. 応用・注意点:現場で陥りやすい罠
SSVCを導入する際の注意点は、「情報の鮮度」です。特に「悪用状況(Exploitation)」は刻一刻と変化します。昨日まで悪用コードがなかった脆弱性が、今日公開されることもあります。
また、SSVCはあくまで意思決定の補助ツールです。脆弱性情報の取得元(NVDやKEVなど)と連携し、評価項目を最新の状態に保つ運用フローを構築することが不可欠です。CVSSの数値を盲目的に信じるのではなく、SSVCを用いて「自社の文脈」を加味することで、セキュリティ運用の効率と精度を飛躍的に高めることが可能です。

コメント