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.
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
withfür lokale Variablen (siehe Bedingungen); kompiliert nicht mit YARA 4. - Module weitgehend gleich, neue wie
lnk,dex,crx;magicfehlt in Builds ohne libmagic, z. B. WebAssembly.
Kommandozeile
| Aufgabe | YARA 4.x | YARA-X |
|---|---|---|
| Scannen | yara rules.yar ziel | yr scan rules.yar ziel |
| Syntax prüfen | yarac rules.yar out.bin | yr check rules.yar |
| Kompilieren | yarac | yr compile |
| Formatieren | — | yr fmt rules.yar |
| Modulausgabe | yara -D | yr dump -m pe datei |
| Getroffene Strings | yara -s | yr scan -s |
Migrations-Checkliste
yr checküber den ganzen Satz, Datei für Datei korrigieren.- Escapes: in Strings nur
\" \\ \t \n \r \xNN; in Regex/escapen. - Unverträgliche Modifikatoren entfernen (
nocasemitxor,base64mitfullword). entrypointdurchpe.entry_pointbzw.elf.entry_pointersetzen.- Feldnamen mit
yr dump -m <modul> probeprüfen. - Positive Proben und Goodware erneut testen (siehe Tests und CI).
- 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.