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 Security Operations がイベントデータとエンティティデータを拡充する方法と、ルールでコンテキストが強化されたデータを使用する方法を学習する。

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

次の例では、各 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: // NETWORK_DNS タイプの UDM イベントごとに、target.ip が suspicious_ip_addresses 参照リストに含まれているかどうかを確認します。$e.metadata.event_type = "NETWORK_DNS" $e.target.ip in %suspicious_ip_addresses

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

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