Saltar al contenido

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.

Publicado el 2 min de lectura

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 with para variables locales (ver condiciones); no compila en YARA 4.
  • Módulos casi iguales, con novedades (lnk, dex, crx) y sin magic en las compilaciones sin libmagic, como la WebAssembly.

Línea de comandos

TareaYARA 4.xYARA-X
Escanearyara rules.yar objetivoyr scan rules.yar objetivo
Comprobar sintaxisyarac rules.yar out.binyr check rules.yar
Compilaryaracyr compile
Formatear—yr fmt rules.yar
Salida de módulosyara -Dyr dump -m pe archivo
Mostrar cadenas encontradasyara -syr scan -s

Lista de migración

  1. yr check sobre todo el conjunto y corrige archivo por archivo.
  2. Escapes: en cadenas solo \" \\ \t \n \r \xNN; en regex escapa /.
  3. Quita modificadores incompatibles (nocase con xor, base64 con fullword).
  4. Sustituye entrypoint por pe.entry_point o elf.entry_point.
  5. Revisa campos con yr dump -m <módulo> muestra.
  6. Repite tus pruebas positivas y de goodware (ver pruebas y CI).
  7. 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.