【正解】A
【0からの解説】
①前提知識:YARA-L 2.0 のルールは主に次のセクションで構成されます。meta:(説明情報)、events:(照合するイベントの条件。UDM フィールドで記述)、match:(イベントをグループ化するプレースホルダ変数と時間枠。例:match: $src, $dst over 10m)、outcome:(リスクスコアや集計値など、検出に付与する出力)、condition:(検出を発生させる条件。例:#e > 100 のように、イベント件数のしきい値を指定)です。
②要件の整理:ルールの目的は「過剰な」ネットワーク接続の検出です。問題は、トリガーが多すぎて「誤検知」が多いことで、求められているのは「ルールの有効性を損なわずに」ノイズを減らすことです。
③正解の理由:A のように condition: セクションに件数のしきい値(例:$e のイベント数が N を超えた場合のみ)を設定すると、少数の正常な接続ではアラートが出ず、本当に「過剰」と言える量の接続があったときだけ検出されます。これは「過剰な接続」というルール本来の意図をそのまま表現したチューニングで、悪意のある大量接続の検出能力を保ったまま、正常な通信による誤検知を削減できます。なお、condition: の件数のしきい値は、match: の時間枠(例:送信元ごとに over 10m)の中で発生したイベントの数を数えるものなので、match: の時間枠と組み合わせて使うことが前提です。つまり A は「時間枠で集約する」ことに加えて「件数で絞り込む」変更であり、C の要素も含んだうえで一歩進んだ対策といえます。
【誤りの選択肢】
B:outcome: でリスクスコアを付けると、アラートの優先順位付けには役立ちますが、アラートの数(ノイズ)自体も誤検知も減りません。アナリストが処理すべきアラートは同じだけ残ります。
C:match: で送信元・宛先ごとに 10 分間の時間枠でグループ化すると、同じ組み合わせのアラートが 1 件にまとまるため、アラートの件数は確かに減ります。ノイズ対策として一定の効果があるので迷いやすい選択肢ですが、C が減らすのはアラートの「件数」だけです。件数のしきい値がなければ、時間枠の中に正常な接続が 1 回あるだけで検出が発生するため、正常な通信による誤検知そのものは(まとめられた形で)残り続けます。誤検知を減らすには、A のように「どれだけの数の接続があれば過剰とみなすか」を condition: で定義する必要があります。
D:最も一般的な IP アドレスを一律に除外すると、それらのアドレスが侵害された場合や攻撃に悪用された場合に検出できなくなり、「ルールの有効性を損なわずに」という要件に反します。
【参考】
YARA-L を使ってみる | Google Security Operations