Best practice per YARA-L

Questo documento descrive le best practice consigliate da Chronicle per la scrittura di regole in YARA-L.

Filtrare i valori zero

I campi potrebbero essere omessi automaticamente negli eventi in base ai quali vengono eseguite le regole. Quando i campi vengono omessi, per impostazione predefinita vengono impostati il valore zero.

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

Se corrispondi a due campi che vengono entrambi omessi, potrebbero essere impostati automaticamente sul valore zero per entrambi. Questo potrebbe causare corrispondenze involontarie in cui due campi corrispondono perché entrambi hanno valori zero. Puoi evitare questo comportamento specificando il valore zero in modo esplicito.

Ad esempio, se hai una regola che equivale a due eventi sulla base di due campi, è possibile che entrambi i campi siano vuoti e generi una corrispondenza:

$e1.field1 = $e2.field2

Se e1.field1 e e2.field2 vengono omessi nei dati, "" = "" è true e ciò causa una corrispondenza.

Le seguenti espressioni di confronto impediscono di ottenere una corrispondenza perché e1.field1 e e2.field2 non includono dati:

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

Aggiungi un filtro di tipo di evento

Nell'esempio seguente, gli indirizzi IP per ogni evento UDM vengono controllati rispetto all'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 eventi UDM di un determinato tipo, l'aggiunta di un filtro per tipo di evento può essere utile per ottimizzarla riducendo il numero di eventi che la regola deve 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. Dovresti anche inserire i filtri di uguaglianza prima dell'espressione regolare o di altri confronti. I filtri vengono applicati nell'ordine in cui appaiono nella regola.