Best practice per YARA-L

Questo documento descrive le best practice consigliate da Google Security Operations per la scrittura delle regole in YARA-L.

Filtrare i valori zero

I campi potrebbero essere omessi automaticamente negli eventi in base ai quali vengono eseguite le regole. Se i campi vengono omessi, vengono usati per impostazione predefinita i valori zero.

Ad esempio, il valore predefinito di una stringa omessa è "".

Se equilighi due campi che vengono entrambi omessi, potrebbero essere entrambi omessi per impostazione predefinita. Ciò potrebbe causare corrispondenze non intenzionali in cui due campi corrispondono perché entrambi hanno zero valori. Puoi evitare questo comportamento specificando esplicitamente il valore zero.

Ad esempio, se hai una regola che identifica due eventi in base a due campi, è possibile che entrambi i campi siano vuoti e provochi una corrispondenza:

$e1.field1 = $e2.field2

Se e1.field1 e e2.field2 vengono omessi nei dati, "" = "" è vero e genera una corrispondenza.

Le seguenti espressioni di confronto assicurano che non venga trovata una corrispondenza perché e1.field1 e e2.field2 non includono dati:

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

Aggiungere un filtro per tipo di evento

Nell'esempio seguente, gli indirizzi IP di ogni evento UDM vengono confrontati con l'elenco di riferimento, utilizzando molte risorse:

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

Se la regola YARA-L rileva solo gli eventi UDM di un determinato tipo di evento, l'aggiunta di un filtro per tipo di evento può aiutarti a ottimizzare la regola riducendo il numero di eventi da valutare.

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

Aggiungi questi filtri all'inizio della sezione degli eventi. Devi anche inserire i filtri di uguaglianza prima di regex o altri confronti. I filtri vengono applicati nell'ordine in cui appaiono nella regola.