Bonnes pratiques YARA-L

Ce document décrit les bonnes pratiques recommandées par Google Security Operations pour écrire des règles dans YARA-L.

Filtrer les valeurs nulles

Certains champs peuvent être automatiquement omis dans les événements pour lesquels vous exécutez vos règles. Lorsque des champs sont omis, ils prennent la valeur zéro par défaut.

Par exemple, une valeur de chaîne omise est "" par défaut.

Si deux champs sont tous les deux omis, il se peut qu'ils prennent la valeur zéro par défaut. Cela peut entraîner des correspondances inattendues où deux champs correspondent, car ils ont tous les deux une valeur nulle. Vous pouvez éviter ce comportement en spécifiant explicitement la valeur zéro.

Par exemple, si vous disposez d'une règle qui équivaut à deux événements sur la base de deux champs, il est possible que ces deux champs soient vides, entraînant une correspondance:

$e1.field1 = $e2.field2

Si e1.field1 et e2.field2 sont tous deux omis dans les données, "" = "" est défini sur "true", ce qui entraîne une correspondance.

Les expressions de comparaison suivantes vous empêchent d'obtenir une correspondance, car e1.field1 et e2.field2 n'incluent aucune donnée:

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

Ajouter un filtre de type d'événement

Dans l'exemple suivant, les adresses IP de chaque événement UDM sont comparées à la liste de référence, ce qui consomme beaucoup de ressources:

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

Si votre règle YARA-L ne détecte que les événements UDM d'un certain type d'événement, l'ajout d'un filtre de type d'événement peut vous aider à optimiser votre règle en réduisant le nombre d'événements qu'elle doit évaluer.

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

Ajoutez ces filtres au début de la section des événements. Vous devez également placer les filtres d'égalité avant les expressions régulières ou les autres comparaisons. Les filtres sont appliqués dans l'ordre dans lequel ils apparaissent dans la règle.