コンテンツにスキップ

FutureVulsでのSSVCの実装#

CSIRTプラン限定

SSVC 機能は CSIRT プランでのみ利用できます。

SSVC(Stakeholder-Specific Vulnerability Categorization)とは、脆弱性管理のための対応優先度判断のフレームワークです。 FutureVuls の CSIRT プランは、脆弱性の対応優先度を決める指標としてSSVCを搭載しており、自動トリアージ機能を利用できます。 SSVCを用いることで実際のリスクを導出して、事前に設定したルールをもとにタスク優先度、タスク対応期限、タスクステータスなどの具体的な対応内容を自動決定できるようになります。

ここでは、FutureVuls で SSVC をどのように実装しているかを取り上げます。

なお、SSVC の理論に関する詳細は「用語解説」をご参照ください。

SSVC 機能の有効化#

SSVC の機能を利用するには、オーガニゼーションで SSVC の機能を有効化する必要があります。

オーガニゼーション設定 > SSVC を開きます。 SSVC設定 の「SSVCの機能を有効化」をクリックすると、オーガ二ゼーションで SSVC が有効化されます。

toggle

対応優先度#

FutureVuls では、検知した脆弱性に以下の4段階の優先順位(SSVC Priority)を割り当てます。

SSVC Priority 内容
Immediate すべてのリソースを集中し必要に応じて組織の通常業務を停止して可能な限り迅速に対応する
Out-of-Cycle 通常よりも迅速に行動し、計画外の機会に緩和策または修復策を実施する
Scheduled 定期メンテナンス時に対応する
Defer 現時点では対応しない

この優先順位付けに応じて、優先度の高いものを即座に対応する、または優先度の低いものや放置しても問題ないものは保留にとどめておく、といった対応が可能になります。

SSVC Priority が計算されるタイミング

FutureVulsでは、脆弱性が検知されたタイミングで、各タスクに対してこの SSVC Priority を導出します。

警戒情報が新たに公開される等で脆弱性データベースが更新されると、次回のスキャンタイミングではそれらを反映して SSVC が再度計算され、タスクが更新されます。

SSVC Priorityの導出方法#

SSVC Priorityの導出にはSSVC決定木を用います。 具体的には、下記4つの項目(以降、Decision Point と表現)の組み合わせを考慮し、その結果 SSVC Priority を導出します。

 Decision Point 内容 設定方法
Exploitation 攻撃コードの公開有無や悪用のレベル 自動で導出
Exposure 脆弱なコンポーネントの露出レベル 手動で設定
Automatable 攻撃の自動化 自動で導出
Human Impact 攻撃された際の業務影響 手動で設定

脆弱性に関する Decision Point(Exploitation, Automatable)は、FutureVuls が収集している情報をもとに自動で導出されます。

一方、システム固有の環境値に関する Decision Point(Exposure, Human Impact)は、ユーザがシステム環境に合わせて設定する必要があります。

FutureVulsが自動で導出するDecision Point

FutureVuls が自動で導出する Decision Point は ExploitationAutomatable の2つです。 それぞれの導出方法を説明します。

Exploitation は警戒情報や攻撃コードの有無とその信頼性を評価する Decision Point です。

FutureVuls では下記のロジックで判定します。

Exploitationの値 説明
active CISA KEVに掲載されているもの
・VulnCheck KEV に掲載されているもの
・MSRC で Exploitability: Detected なもの
・Vulnrichment で SSVC Exploitation: active なもの
poc 上記以外の場合に
・攻撃コード(metasploit, Exploit-DB, GitHubなど)が存在するもの
・JPCERT/CC または CISA から警戒情報が出されているもの
・MSRC で Exploitability: More Likely なもの
・Vulnrichment で SSVC Exploitation: poc なもの
none 上記以外のもの(警戒情報や脅威情報、攻撃コードなどが公開されていないもの)

Automatable は攻撃者が攻撃を自動化できるかを判定する Decision Point です。 FutureVuls では、2024年10月時点では下記の1. 2の条件に合致する脆弱性を自動化可能と判定します。

  1. Vulnrichment に脆弱性が登録されていて SSVC の項目が埋まっている場合、その Automatable の値を利用します。

  2. Vulnrichment に脆弱性が登録されていない場合は、RCE候補の脆弱性を抽出します。

  • 以下の条件を満たす脆弱性を抽出します
    • MSRC で公開されている脆弱性情報の場合、製品への影響説明としてRemote Code Executionと表記されているもの
    • 各脆弱性データベースの脆弱性についての概要欄にリモートで任意コードが実行可能であると記載されているもの
  • リストアップされたRCE候補のCVEをさらにフィルタします
    • CVSS(v2/v3のいずれか)のベクタから自動化可能であると判断できるもの
      • CVSSv3 で以下の条件を満たすもの
        • 攻撃元区分(AV)がネットワーク(N)
        • 必要な特権レベル(PR)が不要(N)
        • ユーザ関与レベル(UI)が不要(N)
      • CVSSv2 で以下の条件を満たすもの
        • 攻撃元区分(AV)がネットワーク(N)
        • 必要な特権レベル(PR)が不要(N)
        • 攻撃前の認証要否(Au)が不要(N)

SSVC Decision Pointの設定#

SSVC Priority の算出に必要な Decision Point のうち、ExposureHuman Impact は管理対象のシステム環境に合わせて設定することを推奨しています。 これらはグループ設定から設定できます。

デフォルト値の設定

SSVC の機能が有効化されたタイミングで、 ExposureHuman Impact の Decision Point にはデフォルトの値が設定されます。 そのため、これらの管理対象システム固有の値については、個別設定をしなくても SSVC Priority 自体は計算されます。 しかし、個別に設定することでより高精度に SSVC Priority を計算できるため、可能であれば設定することをオススメしています。

設定変更の反映

Exposure, Human Impact を変更した場合、次回スキャン時にタスクのSSVC Priorityが反映されます。 最新の設定をもとにSSVC Priorityを導出するためには、次回の定期スキャンを待つか、急いでいる場合は「グループ設定>全サーバを手動スキャン」より再度スキャンしてください。

Exposureの設定方法#

Exposure は対象システムのインターネット露出レベルを設定する Decision Point です。

Exposure Level 説明
Small ローカルサービス/プログラム。高度に制御されたネットワーク。インターネットに接続できない閉域環境。
・インターネットへの入出力が禁止された隔離された環境
Controlled いくつかのアクセス制限および緩和策が実施されているネットワーク
・インターネットに面しているがIP制限あり
・インターネットに直接面していないサーバ(DBサーバなど)
Open インターネットまたはアクセスを制限または制御できない可能性のあるネットワーク(DNSサーバ、ウェブサーバ、VOIPサーバ、メールサーバなど)
・インターネットに面していて無制限にアクセスできるポートがOpenしているサーバ
・ShodanやNessusなどの外部スキャンツールでサービスが発見できる
・通常の保護(有害なIPやURLのブロック、ファイアウォール)なしにウェブや電子メールに接続するクライアントPC

「インターネットに露出しているものの、WAF・IPS・EDR等で防御しているサーバは OpenControlled のどちらか」の判断は難しいですが、「インターネットに露出するサーバのExposureは Open にすべき」です。 これらのセキュリティ製品の防御能力は基本的に実際に適用しているルール次第であり、既知のすべての脆弱性のルールは用意されていません。 また、新規公開された危険な脆弱性への即時対応も限界があるため、インターネットからの攻撃を完全に防ぐことは難しいです。 このため、「インターネットに露出するサーバのExposureは Open」に設定し、SSVCで分類しましょう。 SSVCで Immediateout-of-cycle と判断されたものは、セキュリティ製品の防御状況をチェックし、その後の対応を判断するのが妥当と考えています。

Exposureの設定の考え方やInspectorを用いた自動調査方法は、FutureVulsブログの「インターネット露出サーバの自動特定とSSVC Exposure設定ガイド」を参照してください。

Human Impactの設定方法#

Human Impactは攻撃された際の業務影響を設定する Descision Point です。

Human Impactの値 説明
Low 影響がほぼない
例:PC, 開発環境など
Medium 基幹業務には影響がない
例: 勤怠管理システム
High 一つの基幹業務に長期間影響が出る
例: 一つの基幹システム、一つのWebサービス
Very High 複数の基幹業務が停止し会社全体の基幹業務が続行不能で回復不能になるような超重要システム
例:オンランバンキングやトレーディングシステムなど

Human Impactの設定の考え方は、FutureVulsブログの「SSVCにおける Human Impact 決定方法例」を参照してください。

また、各 Decision Point については、タスク第二ペインにて確認可能です。詳しくはタスク > SSVCを参照してください。

ロールでの上書き#

ロールを用いると、Decision Point をサーバ単位で設定可能なロールで上書きできます。 そのため、グループ設定でシステム全体の Decision Point のデフォルト値を設定した上で、個別のサーバについてはロールで上書き設定することで、より細かい粒度で Decision Point を設定できます。

ロールごとの Decision Point の値を設定後、それぞれのグループの Decision Point の値に戻したい場合は、右上に表示されるリセットボタンを押下することでリセットが可能です。

SSVC設定画面

トリガー&アクション#

SSVC Priorityが「前回と異なる場合に実行するアクション」を定義可能です。 SSVC Priority が導出された際、Priority に応じてタスクのステータス・優先度・対応期限を自動で更新できます。 Immediateの場合はタスク優先度をHighにして対応期限を3日後に設定といったような自動設定することでさらなる自動化・省力化が可能となります。

詳細は、CSIRT Plan>自動トリアージ>SSVCを用いた高度な自動トリアージを参照してください。

ここでは SSVC によるトリガー&アクションの機能を利用するための設定を説明します。

設定変更の反映

SSVCのトリガー&アクションを変更すると、新しいアクションが自動適用されます。 詳細は「20240401リリースノート/#ssvcのトリガーアクション変更時に新しいアクションを自動適用するように」をご参照ください。

SSVC Priority が変化した際のトリガー&アクションは、オーガニゼーション設定 > SSVC より行います。

SSVC設定画面

トリガー&アクションの設定#

ステータス#

ステータス を設定した場合、導出された SSVC Priority が更新されたタイミングで、未対応・対応中・保留中のタスクの内容を更新します。

SSVC Priority が新たに immediate, out of cycle の優先度が高いPriorityと判定された場合は、タスクステータスを自動でnewに戻すことができるため、オススメの設定です。 newのタスクは脆弱性一覧・タスク一覧上のサブメニュー上で「未対応」ステータスに振り分けられますので、再度トリアージが必要なタスクであると認識出来ます。

scheduled, defer といった優先度が低いと判断されたタスクに対しては、自動でタスクステータスを deferrisk_accepted に設定可能です。

タスクステータスが更新される条件

SSVCによって更新されうるタスクステータスは、タスクステータスが対応済み(下記)以外のものです。

  • WORKAROUND
  • NOT_AFFECTED
  • RISK_ACCEPTED
  • PATCH_APPLIED

なお、タスクステータスの種類については「タスクステータス」をご確認ください。

優先度#

優先度を設定した場合、タスクの優先度を SSVC Priority 導出タイミングで自動反映します。

対応期限#

SSVC Priority を導出したタイミングで、自動でタスクの対応期限を更新します。 対応期限を超過したタスクは一覧やメール通知で確認可能で、これにより対応漏れを防ぐことができます。 immediate, out of cycle は優先度が高く定期メンテナンス外で対応すべきであるため、SSVC Priority 導出から〇日後、という指定をしてください。 scheduled, defer については定期メンテナンスで対応すれば十分なタスクであるため、定期メンテナンスの周期をcron式で指定してください。

対応期限が更新される条件

対応期限は下記のいずれか1つ以上に該当する場合、更新されます。

  • 対応期限が未設定である場合
  • 現在設定されている対応期限がスペシャル警戒タグにより自動設定されたものでなく、かつ現在設定されているよりも期限が短くなる場合

グループ設定での上書き#

オーガニゼーション単位で定めたトリガー&アクションの設定を、グループ設定よりグループ単位で上書きできます。 そのため、組織全体でトリガー&アクションによる対応方針のデフォルト値を設定した上で、運用上の必要に応じてグループ単位で設定することをオススメします。

なお上書き設定した場合、オーガニゼーション設定画面から、どのグループがどの設定を上書き設定しているかの一覧を確認できます。

SSVC決定木のカスタマイズ#

FutureVuls では SSVC Priority を算出する決定木のカスタマイズが可能です。 基本となるデフォルトの決定木が標準で設定されていますが、実運用の中で SSVC の導出ロジックを変更する必要があると判断した場合にカスタマイズしてください。

カスタマイズの反映

決定木をカスタマイズした場合、次回スキャン時にタスクの SSVC Priority が反映されます。 次回の定期スキャンを待つか、急いでいる場合は「グループ設定>全サーバを手動スキャン」より再度スキャンしてください。

グループ設定での上書き#

オーガニゼーション単位でカスタマイズした SSVC 決定木の設定を、さらにグループ単位で上書きできます。 実運用の中で、SSVCの導出結果をグループ個別で変更する必要があると判断した場合に、こちらをカスタマイズしてください。