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.
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:
| Prefijo | Significado | Ejemplo |
|---|---|---|
MAL_ | Malware | MAL_Emotet_Loader_Mar24 |
APT_ | Herramientas de un actor | APT_UNC0000_Backdoor_Config |
HKTL_ | Herramienta ofensiva | HKTL_CobaltStrike_Beacon_Strings |
SUSP_ | Rasgo sospechoso | SUSP_PE_Overlay_Base64_Script |
EXPL_ | Exploit | EXPL_CVE_2023_23397_Outlook |
WEBSHELL_ | Webshell | WEBSHELL_PHP_Generic_Eval |
PUA_ | Potencialmente no deseado | PUA_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
| Campo | Uso |
|---|---|
description | Una frase: qué detecta |
author | Autor (visible en resultados bajo DRL 1.1) |
reference | Informe o caso de origen |
date / modified | Creación y último cambio (AAAA-MM-DD) |
id | UUID estable |
hash | Hashes de muestras (clave repetida) |
score | Confianza 0–100 |
license | Licencia, si difiere de la del repositorio |
rule MAL_Example_Conventions_Sep26
{
meta:
= "Cargador de ejemplo con los campos meta habituales"
= "yararules.org"
= "https://yararules.org/es/learn/style-conventions"
= "2026-09-29"
= "2026-09-29"
= "5b0f7a58-1f35-4c1c-9d3e-6b2f4b1b8a10"
= 75
= "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.