Zum Inhalt springen

YARA-Namens- und Stilkonventionen

Konventionen öffentlicher YARA-Regelsammlungen: Namenspräfixe (MAL_, HKTL_…), Meta-Felder, String-Benennung ($x, $s, $fp), Formatierung mit yr fmt und Versionierung.

Veröffentlicht am 2 Min. Lesezeit

Stil ändert nicht, was eine Regel erkennt, aber ob der nächste Analyst sie versteht, ihr vertraut und sie pflegen kann. Diese Konventionen stammen aus großen öffentlichen Sammlungen wie Signature Base und den YARA-Forge-Paketen.

Regelnamen

Üblich ist PRÄFIX_Familie_Detail_Datum:

PräfixBedeutungBeispiel
MAL_MalwareMAL_Emotet_Loader_Mar24
APT_Werkzeuge eines AkteursAPT_UNC0000_Backdoor_Config
HKTL_HacktoolHKTL_CobaltStrike_Beacon_Strings
SUSP_Verdächtiges MerkmalSUSP_PE_Overlay_Base64_Script
EXPL_ExploitEXPL_CVE_2023_23397_Outlook
WEBSHELL_WebshellWEBSHELL_PHP_Generic_Eval
PUA_Potenziell unerwünschtPUA_Miner_XMRig_Config

YARA Forge stellt zusätzlich den Quellnamen voran (SIGNATURE_BASE_…) — deshalb zeigen die Seiten der Bibliothek beide Namen.

Meta-Felder

FeldZweck
descriptionEin Satz: was die Regel erkennt
authorAutor (unter DRL 1.1 in Ausgaben sichtbar)
referenceBericht oder Fall als Anlass
date / modifiedErstellung / letzte Änderung (JJJJ-MM-TT)
idStabile UUID
hashProben-Hashes (Schlüssel wiederholt)
scoreKonfidenz 0–100
licenseLizenz, falls abweichend vom Repository
rule MAL_Example_Conventions_Sep26
{
    meta:
        description = "Beispiel-Loader mit den üblichen Meta-Feldern"
        author = "yararules.org"
        reference = "https://yararules.org/de/learn/style-conventions"
        date = "2026-09-29"
        modified = "2026-09-29"
        id = "5b0f7a58-1f35-4c1c-9d3e-6b2f4b1b8a10"
        score = 75
        license = "DRL-1.1"
    strings:
        $x1 = "ExampleLoader_v3_config" ascii
        $s1 = "Stage2Url" wide
        $s2 = "InjectInto" ascii
        $fp1 = "Copyright (c) Example Software GmbH" wide
    condition:
        uint16(0) == 0x5A4D and filesize < 2MB and
        not 1 of ($fp*) and
        (1 of ($x*) or all of ($s*))
}

String-Benennung

$x* starke Indikatoren, $s* unterstützende, $a*/$op* thematische Gruppen, $fp* Ausnahmen gegen False Positives. So liest sich 1 of ($x*) or 3 of ($s*) von selbst.

Warum das zählt

Gut benannte Regeln lassen sich filtern und priorisieren, ohne sie zu öffnen: Ein SOC-Analyst weiß, dass ein MAL_-Treffer dringender ist als ein SUSP_-Treffer, und eine Pipeline kann HKTL_ anders routen. Vollständige Metadaten erlauben es, die Herkunft einer Detektion auch Monate später nachzuvollziehen.

Formatierung und Kommentare

yr fmt formatiert kanonisch; der Linter enthält einen Formatierer, der nur Leerraum ändert und Regeln mit Kommentaren unangetastet lässt. Kommentare für Begründungen, meta für alles, was in Treffern sichtbar sein soll.

Versionierung

Namen nie für andere Logik wiederverwenden, id stabil halten, modified bei jeder Änderung aktualisieren, False Positives festhalten (Tests und CI) und eine Lizenz angeben (Öffentliche Regelsammlungen).

FAQ

Was bedeuten Präfixe wie MAL_ oder HKTL_?
Sie klassifizieren die Regel: MAL_ Malware, HKTL_ Hacktool, SUSP_ verdächtiges Merkmal, APT_ Werkzeuge eines Akteurs, EXPL_ Exploit, WEBSHELL_ Webshell, PUA_ potenziell unerwünschte Anwendung.
Welche Meta-Felder sollte jede Regel haben?
Mindestens description, author, date und reference; viele Sammlungen ergänzen id, modified, score, hash und license.
Gibt es einen offiziellen Formatierer?
YARA-X bringt yr fmt mit. Der Linter dieser Website enthält zudem einen vorsichtigen Formatierer, der nur Leerraum ändert.