YARA-L のベスト プラクティス

以下でサポートされています。

このドキュメントでは、YARA-L でルールを記述するための Google Security Operations の推奨ベスト プラクティスについて説明します。

ゼロ値を除外する

ルールを実行するイベントでフィールドが自動的に省略されることがあります。フィールドが省略されると、デフォルトでゼロ値になります。

たとえば、省略された文字列値のデフォルト値は "" です。

省略された 2 つのフィールドを等価にすると、両方ともデフォルトでゼロ値になる可能性があります。これは、2 つのフィールドがゼロ値になるために一致してしまう意図しない一致につながる可能性があります。この動作を回避するには、ゼロ値を明示的に指定します。

たとえば、2 つのフィールドに基づいて 2 つのイベントを等価にするルールがある場合は、これらのフィールドの両方が空になっており、一致が発生する可能性があります。

$e1.field1 = $e2.field2

データで e1.field1e2.field2 の両方が省略されている場合は、"" = "" が true になり、一致が発生します。

次の比較式では、e1.field1e2.field2 にデータが含まれていないため、一致することはありません。

 $e1.field1 = $e2.field2
 $e1.field != ""

ゼロ値とエンリッチメント依存ルール

ルールがまだ更新されていない拡充データに依存している場合、値は null または 0 になることがあります。そのため、エンリッチメント依存ルールでゼロ値(null チェック)を除外することをおすすめします。Google SecOps でイベントとエンティティ データを強化する方法と、ルールでコンテキストが強化されたデータを使用する方法について学習します。

イベントタイプ フィルタを追加する

次の例では、各 UDM イベントの IP アドレスが参照リストと照合され、大量のリソースが消費されます。

events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses

YARA-L ルールの検出対象が特定のイベントタイプの UDM イベントのみである場合は、イベントタイプ フィルタを追加すると、ルールで評価する必要があるイベントの数を減らすことでルールを最適化できます。

events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses

これらのフィルタをイベント セクションの先頭に追加します。また、正規表現やその他の比較の前に等式フィルタを配置する必要もあります。フィルタは、ルールで表示される順序で適用されます。

YARA-L の操作に関するコミュニティ ブログについては、以下をご覧ください。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。