Práticas recomendadas da YARA-L

Este documento descreve as práticas recomendadas pelas Operações de Segurança do Google para escrever regras em YARA-L.

Filtrar valores zero

Os campos podem ser omitidos automaticamente nos eventos em que você executa suas regras. Quando os campos são omitidos, o padrão é o valor zero.

Por exemplo, um valor de string omitido tem como padrão "".

Se você igualar dois campos omitidos, ambos poderão usar os valores zero por padrão. Isso pode levar a correspondências não intencionais em que dois campos são correspondentes porque ambos têm valores zero. Evite esse comportamento especificando explicitamente o valor zero.

Por exemplo, se você tiver uma regra que equipara dois eventos com base em dois campos, há uma chance de que ambos os campos estejam vazios, causando uma correspondência:

$e1.field1 = $e2.field2

Se e1.field1 e e2.field2 forem omitidos nos dados, "" = "" será verdadeiro, causando uma correspondência.

As expressões de comparação a seguir garantem que você não receba uma correspondência porque e1.field1 e e2.field2 não incluem dados:

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

Adicionar um filtro de tipo de evento

No exemplo a seguir, os endereços IP de cada evento de UDM são comparados com a lista de referências, consumindo muitos recursos:

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 a regra da YARA-L detectar apenas eventos de UDM de um determinado tipo de evento, adicionar um filtro de tipo de evento poderá ajudar a otimizar sua regra reduzindo o número de eventos que ela precisa avaliar.

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

Adicione esses filtros ao início da seção de eventos. Você também deve colocar filtros de igualdade antes do regex ou de outras comparações. Os filtros são aplicados na ordem em que aparecem na regra.