sonar-assess-risk

イベントログのリスクスコアを計算します。検出ルールと資産情報をもとにETIRリスクスコアを算出してレコードに追加し、セキュリティ運用においてイベントの深刻度の優先順位付けに活用します。

コマンドプロパティ

項目説明
コマンドタイプ加工クエリ
必要な権限なし
ライセンス使用量該当なし
並列実行対応
分散実行データノードで実行(mapper)

構文

sonar-assess-risk [simple=BOOL] [rule=BOOL]

オプション

simple=BOOL
t を指定すると _rule_name、_private_ip、_capec_id、_likelihood_type、_likelihood_target、_exploit_target、_exploit_cve_id フィールドを省略します(デフォルト: f)。
rule=BOOL
t を指定するとルール関連フィールド(_rule_ticket_issue_cond、_rule_enabled)を追加で出力します(デフォルト: f)。

入力フィールド

フィールド型必須/任意説明
_rule_typestring必須検出ルールタイプ(STREAM または BATCH)
_ruleinteger必須検出ルールID
signaturestring任意検出されたシグネチャ文字列。検出ルールに連携されたシグネチャアプリから一致するシグネチャを照会し、CAPECマッピング情報(_capec_id)を取得するために使用します
_sitestring任意サイト名。指定すると、該当サイトに登録された資産情報に照会範囲を絞り込みます
host_ipstring任意検出されたホストのIPアドレス。資産情報(機密性・完全性・可用性ランク、CVE脆弱性)の照会に使用します
src_ipstring任意イベントの送信元IPアドレス。host_ipと同様に資産情報の照会に使用します
dst_ipstring任意イベントの宛先IPアドレス。host_ipと同様に資産情報の照会に使用します

出力フィールド

このコマンドは入力レコードにフィールドを追加する加工クエリのため、下表にない入力フィールドはそのまま維持されます。検出ルールが見つかった場合、以下のフィールドが常に追加されます(ただし、シグネチャ・資産のマッチング情報がない場合は _risk_score の値が null になることがあります)。

フィールド型説明
_rule_typestring入力フィールドを維持(STREAM または BATCH)
_ruleinteger入力フィールドを維持(検出ルールID)
host_ipstring入力フィールドを維持
src_ipstring入力フィールドを維持
dst_ipstring入力フィールドを維持
_signature_guidstring入力フィールドを維持(このコマンドは値を設定せず、CAPEC照会には signature フィールドを使用します)
_risk_scoreinteger算出されたリスクスコア(0~100の値。値が大きいほどリスクが高い)

simple=f(デフォルト)の場合に追加で出力されます。simple=t の場合、以下のフィールドは省略されます。

フィールド型説明
_rule_namestring検出ルール名
_private_ipstringイベントで識別された内部IPアドレス
_capec_idstringシグネチャに関連付けられたCAPEC ID
_likelihood_typestring可能性の計算に使用されたタイプ
_likelihood_targetstring可能性の計算対象
_exploit_targetstring脆弱性が確認された資産のIPアドレス
_exploit_cve_idstring関連するCVE ID

rule=t の場合に追加で出力されます。

フィールド型説明
_rule_ticket_issue_condstringチケット発行条件(NEVER、ETIR_THRESHOLD、ALWAYS)
_rule_enabledboolean検出ルールの有効/無効

計算エラーが発生した場合に出力されます。

フィールド型説明
_errorstringエラーメッセージ
_error_filestringエラーが発生したソースファイル名
_error_lineintegerエラーが発生したソースコードの行番号

エラーコード

パースエラー

該当なし

ランタイムエラー

該当なし

処理中に例外が発生した場合、レコードを破棄せずに _error、_error_file、_error_line フィールドにエラー情報を記録してパイプラインに渡します。

説明

sonar-assess-risk はイベントレコードに含まれる _rule_type と _rule フィールドで対応する検出ルールオブジェクトを取得し、signature・_site・host_ip・src_ip・dst_ip フィールドを参照してETIRサービスでリスクスコアを計算し、レコードに追加します。

_rule_type と _rule フィールドは、イベントを発生させた元のログにのみ記録されます。そのため、event コマンドに raw=t オプションを指定して照会した結果を入力として使用します。

_rule IDに該当する検出ルールが存在しない場合、そのレコードにはフィールドを追加せずそのままパイプラインに渡します。一方、_rule_type や _rule フィールドがない、または値が正しくないためルール照会自体が失敗した場合は計算エラーとして処理され、_error などのエラーフィールドも追加されます。

simple=t オプションを使用すると _rule_name、_private_ip、_capec_id、_likelihood_type、_likelihood_target、_exploit_target、_exploit_cve_id フィールドを省略して出力がシンプルになります。リスクスコアのみが必要なフィルタリングパイプラインで便利です。

rule=t オプションを使用すると、検出ルールのチケット発行条件(_rule_ticket_issue_cond)と有効状態(_rule_enabled)も確認できます。

使用例

  1. 直近1時間以内のイベントのリスクスコアを計算

    event duration=1h raw=t
    | sonar-assess-risk
    | fields _rule_type, _rule, _rule_name, src_ip, dst_ip, _risk_score
    
  2. simple=t オプションでリスクスコアのみを追加して高リスクイベントをフィルタリング

    event duration=1d raw=t
    | sonar-assess-risk simple=t
    | search _risk_score >= 80
    | sort -_risk_score
    
  3. 検出ルール情報を含めてリスクスコアを計算

    event duration=1h raw=t
    | sonar-assess-risk rule=t
    | fields _rule, _rule_name, _rule_enabled, _rule_ticket_issue_cond, _risk_score
    

変更履歴

sonar-assess-risk コマンドはSonar 4.0.2609.0(5.0系は5.0.2603.0)バージョンから利用可能です。