YARA-X vs YARA: diferencias y migración
YARA-X, la reescritura en Rust de YARA por VirusTotal: compatibilidad, análisis más estricto, novedades, diferencias de línea de comandos, migración y uso en el navegador.
YARA-X es el sucesor de YARA, reescrito en Rust por VirusTotal. Lee el mismo lenguaje de reglas, así que el cambio suele ser sencillo, pero es deliberadamente más estricto donde YARA 4.x era permisivo.
Historia y estado
Tras más de una década de código C, VirusTotal creó YARA-X con tres objetivos: mejores mensajes de error, mejor rendimiento con conjuntos de reglas complejos y una base de código más segura. YARA-X está en producción en VirusTotal (Livehunt y Retrohunt); YARA 4.x recibe sobre todo mantenimiento. Documentación: YARA-X.
Compatibilidad
El lenguaje es el mismo. De las miles de reglas de esta biblioteca, la inmensa mayoría compila con YARA-X 1.20 sin cambios; cada página indica su estado.
Diferencias destacables
- Análisis más estricto: escapes inválidos, modificadores inválidos o duplicados y algunas construcciones ambiguas son errores.
- Errores más claros, con código, línea y columna; el editor online los muestra mientras escribes.
- Campos de módulo desconocidos son errores de compilación.
- base64: el patrón debe tener al menos tres bytes.
- Rendimiento mejor con regex complejas y grandes conjuntos, con avisos de patrones lentos.
- Nueva sintaxis
withpara variables locales (ver condiciones); no compila en YARA 4. - Módulos casi iguales, con novedades (
lnk,dex,crx) y sinmagicen las compilaciones sin libmagic, como la WebAssembly.
Línea de comandos
| Tarea | YARA 4.x | YARA-X |
|---|---|---|
| Escanear | yara rules.yar objetivo | yr scan rules.yar objetivo |
| Comprobar sintaxis | yarac rules.yar out.bin | yr check rules.yar |
| Compilar | yarac | yr compile |
| Formatear | — | yr fmt rules.yar |
| Salida de módulos | yara -D | yr dump -m pe archivo |
| Mostrar cadenas encontradas | yara -s | yr scan -s |
Lista de migración
yr checksobre todo el conjunto y corrige archivo por archivo.- Escapes: en cadenas solo
\" \\ \t \n \r \xNN; en regex escapa/. - Quita modificadores incompatibles (
nocaseconxor,base64confullword). - Sustituye
entrypointporpe.entry_pointoelf.entry_point. - Revisa campos con
yr dump -m <módulo> muestra. - Repite tus pruebas positivas y de goodware (ver pruebas y CI).
- Revisa los avisos de rendimiento (rendimiento).
Ejemplo de análisis estricto
rule Escape_Example
{
strings:
$ok = "C:\\Windows\\Temp\\"
$bad = "C:\Windows\Temp" // does not compile: \W y \T no son escapes válidos
condition:
any of them
}
YARA-X en el navegador
Las herramientas de este sitio usan la versión oficial @virustotal/yara-x 1.20.0 (BSD-3-Clause), servida desde este dominio y ejecutada en un Web Worker: el escáner, el editor y el linter. Nada se sube: los archivos se leen con la API File y se escanean en memoria.
FAQ
- ¿Funcionarán mis reglas YARA con YARA-X?
- La mayoría compilan sin cambios. Las que dependían de un análisis permisivo (escapes inválidos, modificadores duplicados o incompatibles) necesitan pequeños arreglos que YARA-X señala con precisión.
- ¿Sigue manteniéndose YARA?
- YARA 4.x recibe mantenimiento, pero el desarrollo nuevo está en YARA-X, que VirusTotal usa en producción.
- ¿Puede YARA-X ejecutarse en el navegador?
- Sí, se compila a WebAssembly. El escáner, el editor y el linter de este sitio lo ejecutan en un Web Worker, así que los archivos se analizan en local.