Zum Inhalt springen

YARA-X vs. YARA: Unterschiede und Migration

YARA-X, die Rust-Neuimplementierung von YARA durch VirusTotal: Kompatibilität, strengeres Parsing, neue Syntax, CLI-Unterschiede, Migrations-Checkliste und Browser-Einsatz.

Veröffentlicht am 2 Min. Lesezeit

YARA-X ist der Nachfolger von YARA, von VirusTotal in Rust neu geschrieben. Die Regelsprache bleibt gleich, der Umstieg ist meist einfach — YARA-X ist aber bewusst strenger, wo YARA 4.x nachsichtig war.

Geschichte und Status

Nach über zehn Jahren C-Code startete VirusTotal YARA-X mit drei Zielen: bessere Fehlermeldungen, bessere Performance bei komplexen Regelsätzen und eine sicherere Codebasis. YARA-X läuft bei VirusTotal produktiv (Livehunt, Retrohunt); YARA 4.x wird vor allem gewartet. Dokumentation: YARA-X.

Kompatibilität

Von den tausenden Regeln dieser Bibliothek kompiliert die große Mehrheit unverändert mit YARA-X 1.20; jede Regelseite zeigt den Status.

Wichtige Unterschiede

  • Strengeres Parsing: ungültige Escapes, ungültige oder doppelte Modifikatoren und einige mehrdeutige Konstrukte sind Fehler.
  • Klarere Fehler mit Code, Zeile und Spalte; der Online-Editor zeigt sie beim Tippen.
  • Unbekannte Modulfelder sind Kompilierfehler.
  • base64: Das Muster muss mindestens drei Bytes lang sein.
  • Performance: besser bei komplexen Regex und großen Sätzen, mit Warnungen zu langsamen Mustern.
  • Neue Syntax with für lokale Variablen (siehe Bedingungen); kompiliert nicht mit YARA 4.
  • Module weitgehend gleich, neue wie lnk, dex, crx; magic fehlt in Builds ohne libmagic, z. B. WebAssembly.

Kommandozeile

AufgabeYARA 4.xYARA-X
Scannenyara rules.yar zielyr scan rules.yar ziel
Syntax prüfenyarac rules.yar out.binyr check rules.yar
Kompilierenyaracyr compile
Formatieren—yr fmt rules.yar
Modulausgabeyara -Dyr dump -m pe datei
Getroffene Stringsyara -syr scan -s

Migrations-Checkliste

  1. yr check über den ganzen Satz, Datei für Datei korrigieren.
  2. Escapes: in Strings nur \" \\ \t \n \r \xNN; in Regex / escapen.
  3. Unverträgliche Modifikatoren entfernen (nocase mit xor, base64 mit fullword).
  4. entrypoint durch pe.entry_point bzw. elf.entry_point ersetzen.
  5. Feldnamen mit yr dump -m <modul> probe prüfen.
  6. Positive Proben und Goodware erneut testen (siehe Tests und CI).
  7. Neue Performance-Warnungen prüfen (Performance).

Beispiel für strengeres Parsing

rule Escape_Example
{
    strings:
        $ok = "C:\\Windows\\Temp\\"
        $bad = "C:\Windows\Temp"   // does not compile: \W und \T sind keine gültigen Escapes
    condition:
        any of them
}

YARA-X im Browser

Die Tools dieser Website nutzen das offizielle @virustotal/yara-x 1.20.0 (BSD-3-Clause), von dieser Domain ausgeliefert und in einem Web Worker ausgeführt: Scanner, Editor und Linter. Nichts wird hochgeladen — Dateien werden über die File-API gelesen und im Speicher gescannt.

FAQ

Funktionieren meine YARA-Regeln mit YARA-X?
Die meisten kompilieren unverändert. Regeln, die auf nachsichtiges Parsing angewiesen waren (ungültige Escapes, doppelte oder unverträgliche Modifikatoren), brauchen kleine Korrekturen, die YARA-X genau benennt.
Wird YARA noch gepflegt?
YARA 4.x erhält Wartung, die Weiterentwicklung findet in YARA-X statt, das VirusTotal produktiv einsetzt.
Läuft YARA-X im Browser?
Ja, YARA-X lässt sich nach WebAssembly kompilieren. Scanner, Editor und Linter dieser Website nutzen es in einem Web Worker; Dateien werden lokal analysiert.