Saltar al contenido

Convenciones de nombres y estilo en YARA

Convenciones de los conjuntos de reglas YARA públicos: prefijos de nombre (MAL_, HKTL_…), campos meta, nombres de cadenas ($x, $s, $fp), formato con yr fmt y versiones.

Publicado el 2 min de lectura

El estilo no cambia lo que detecta una regla, pero decide si el siguiente analista podrá entenderla, confiar en ella y mantenerla. Estas convenciones son las de grandes conjuntos públicos como Signature Base o los paquetes de YARA Forge.

Nombres de reglas

Formato habitual PREFIJO_Familia_Detalle_Fecha:

PrefijoSignificadoEjemplo
MAL_MalwareMAL_Emotet_Loader_Mar24
APT_Herramientas de un actorAPT_UNC0000_Backdoor_Config
HKTL_Herramienta ofensivaHKTL_CobaltStrike_Beacon_Strings
SUSP_Rasgo sospechosoSUSP_PE_Overlay_Base64_Script
EXPL_ExploitEXPL_CVE_2023_23397_Outlook
WEBSHELL_WebshellWEBSHELL_PHP_Generic_Eval
PUA_Potencialmente no deseadoPUA_Miner_XMRig_Config

YARA Forge añade además el nombre de la fuente (SIGNATURE_BASE_…), por eso las páginas de la biblioteca muestran ambos nombres.

Campos meta

CampoUso
descriptionUna frase: qué detecta
authorAutor (visible en resultados bajo DRL 1.1)
referenceInforme o caso de origen
date / modifiedCreación y último cambio (AAAA-MM-DD)
idUUID estable
hashHashes de muestras (clave repetida)
scoreConfianza 0–100
licenseLicencia, si difiere de la del repositorio
rule MAL_Example_Conventions_Sep26
{
    meta:
        description = "Cargador de ejemplo con los campos meta habituales"
        author = "yararules.org"
        reference = "https://yararules.org/es/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*))
}

Nombres de cadenas

$x* indicadores fuertes, $s* indicadores de apoyo, $a*/$op* grupos temáticos, $fp* exclusiones de falsos positivos. Así los conjuntos se leen solos: 1 of ($x*) or 3 of ($s*).

Formato y comentarios

yr fmt reescribe las reglas en un formato canónico; el linter incluye un formateador que solo toca espacios y deja intactas las reglas con comentarios. Usa comentarios para el razonamiento y meta para lo que deba verse en los resultados.

Por qué importa

Las reglas bien nombradas se pueden filtrar y priorizar sin abrirlas: un analista de SOC sabe que una coincidencia MAL_ merece más urgencia que una SUSP_, y un pipeline puede enrutar HKTL_ a otra cola. Los metadatos completos permiten además auditar el origen de una detección meses después, cuando nadie recuerda el caso que la motivó.

Versiones

No reutilices un nombre para otra lógica, mantén el id estable, actualiza modified en cada cambio, registra los falsos positivos (pruebas y CI) e indica una licencia (conjuntos públicos).

FAQ

¿Qué significan prefijos como MAL_ o HKTL_?
Clasifican la regla: MAL_ malware, HKTL_ herramienta ofensiva, SUSP_ rasgo sospechoso, APT_ herramientas de un actor, EXPL_ exploit, WEBSHELL_ webshell y PUA_ aplicación potencialmente no deseada.
¿Qué campos meta debería tener toda regla?
Como mínimo description, author, date y reference. Muchos conjuntos añaden id, modified, score, hash y license.
¿Hay un formateador oficial?
YARA-X incluye yr fmt. El linter de este sitio tiene además un formateador prudente que solo cambia espacios.