関数からプレースホルダへの割り当て
YARA-L では、関数を使用してデータを処理し、結果を保存するプロセスを関数からプレースホルダへの割り当てと呼びます。プレースホルダ変数($ で示されます)は、UDM イベントやその他のデータソースから抽出された特定のデータポイントを表すために使用されます。関数はこれらのイベント フィールドまたはフィールドの組み合わせに対して動作し、これらのオペレーションの結果はプレースホルダ変数に割り当てられ、match、condition、outcome セクションなど、クエリの他の部分で使用されます。
関数: YARA-L には、イベント フィールドで計算やデータ変換を実行できる指標関数が用意されています。
プレースホルダ変数: 先頭にドル記号が付いた変数(
$user、$ipなど)で、イベント フィールドまたは関数出力から派生した値を保持できます。これらはeventsセクションで定義され、ルール全体で使用できます。割り当て: 関数の出力がプレースホルダ変数に割り当てられます。
制限事項
関数からプレースホルダへの割り当てを使用する場合、次の 2 つの制限があります。
関数からプレースホルダへの割り当てのすべてのプレースホルダは、イベント フィールドを含む式に割り当てる必要があります。
有効な例
$ph1 = $e.principal.hostname $ph2 = $e.src.hostname // Both $ph1 and $ph2 have been assigned to an expression containing an event field. $ph1 = strings.concat($ph2, ".com")$ph1 = $e.network.email.from $ph2 = strings.concat($e.principal.hostname, "@gmail.com") // Both $ph1 and $ph2 have been assigned to an expression containing an event field. $ph1 = strings.to_lower($ph2)無効な例
$ph1 = strings.concat($e.principal.hostname, "foo") $ph2 = strings.concat($ph1, "bar") // $ph2 has NOT been assigned to an expression containing an event field.関数呼び出しは、1 つのイベントに依存する必要があります。ただし、同じイベントからの複数のフィールドが関数呼び出し引数で使用される場合があります。
有効な例
$ph = strings.concat($event.principal.hostname, "string2")$ph = strings.concat($event.principal.hostname, $event.src.hostname)無効な例
$ph = strings.concat("string1", "string2")$ph = strings.concat($event.principal.hostname, $anotherEvent.src.hostname)
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。