Conventions de nommage et de style YARA
Les conventions des jeux de règles YARA publics : préfixes de noms (MAL_, HKTL_…), champs meta, nommage des chaînes ($x, $s, $fp), formatage yr fmt et versionnage.
Le style ne change pas ce qu’une règle détecte, mais il décide si le prochain analyste pourra la comprendre, lui faire confiance et la maintenir. Les conventions ci-dessous sont celles des grands jeux publics comme Signature Base ou les paquets YARA Forge ; les adopter rend vos règles familières à tous. Référence : le YARA Style Guide.
Noms de règles
Un format courant est PREFIXE_Famille_Detail_Date, du générique au spécifique, segments séparés par _ :
| Préfixe | Signification | Exemple |
|---|---|---|
MAL_ | Malware | MAL_Emotet_Loader_Mar24 |
APT_ | Outillage d’un acteur de la menace | APT_UNC0000_Backdoor_Config |
HKTL_ | Outil offensif / framework | HKTL_CobaltStrike_Beacon_Strings |
SUSP_ | Trait suspect, pas malveillant en soi | SUSP_PE_Overlay_Base64_Script |
EXPL_ | Exploit ou document piégé | EXPL_CVE_2023_23397_Outlook |
WEBSHELL_ | Web shell | WEBSHELL_PHP_Generic_Eval |
PUA_ | Application potentiellement indésirable | PUA_Miner_XMRig_Config |
Certains jeux ajoutent la plateforme (MAL_Win_, MAL_Linux_) ou une technique. YARA Forge préfixe en plus chaque règle par sa source (SIGNATURE_BASE_…), d’où les deux noms affichés sur les pages de la bibliothèque. Vous pouvez parcourir la bibliothèque par catégorie : malwares, outils offensifs, web shells.
Champs meta
| Champ | Rôle |
|---|---|
description | Une phrase : ce que la règle détecte |
author | L’auteur (à conserver dans les résultats sous DRL 1.1) |
reference | Rapport, article ou dossier à l’origine de la règle |
date / modified | Création et dernière modification, AAAA-MM-JJ |
id | UUID stable, qui survit aux renommages |
hash | Hashes des échantillons utilisés (clé répétée) |
score | Confiance 0–100 qu’une correspondance soit malveillante |
license | Licence de la règle, si elle diffère de celle du dépôt |
rule MAL_Example_Conventions_Sep26
{
meta:
= "Chargeur d'exemple montrant les champs meta usuels"
= "yararules.org"
= "https://yararules.org/fr/learn/style-conventions"
= "2026-09-29"
= "2026-09-29"
= "5b0f7a58-1f35-4c1c-9d3e-6b2f4b1b8a10"
= "0000000000000000000000000000000000000000000000000000000000000000"
= 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*))
}
Nommage des chaînes
$x*— indicateurs forts (mutex, C2 unique), chacun suffisant seul ;$s*— indicateurs moyens, qui ne comptent qu’en combinaison ;$a*,$op*— groupes thématiques, par exemple$op*pour des séquences d’opcodes, ou$a*pour une présélection (magic, garde-fous) ;$fp*— exclusions de faux positifs, utilisées avecnot.
Les ensembles se lisent alors naturellement : 1 of ($x*) or 3 of ($s*).
Formatage
Une mise en page cohérente rend les diffs lisibles. yr fmt (YARA-X) réécrit les règles au format canonique. Le linter de ce site inclut un formateur prudent qui ne modifie que les espaces : il réindente les sections, aligne les = et laisse intactes les règles qui contiennent des commentaires.
- Quatre espaces (ou une tabulation) pour les mots-clés de section, huit pour leur contenu.
- Un motif par ligne ; les longues chaînes hexadécimales peuvent être coupées.
- Une ligne vide entre les règles.
Commentaires
Utilisez les commentaires pour le raisonnement qui n’a pas sa place dans meta — pourquoi tel octet est en joker, de quelle compilation vient un motif — et restez concis. Tout ce qu’un consommateur doit voir dans les résultats va dans meta.
Versionnage
- Ne réutilisez jamais un nom de règle pour une logique différente : créez une nouvelle règle et retirez l’ancienne.
- Gardez l’
idstable lors des renommages et mettez à jourmodifiedà chaque changement de logique. - Consignez les faux positifs et leurs corrections (voir tests et CI).
- Indiquez une licence : sans elle, personne ne peut légalement réutiliser votre règle (voir jeux de règles publics).
Comparez les pratiques de différentes sources dans la bibliothèque et vérifiez vos règles avec le linter.
FAQ
- Que signifient les préfixes MAL_ ou HKTL_ dans les noms de règles ?
- Ils classent la règle : MAL_ pour un malware, HKTL_ pour un outil offensif, SUSP_ pour un trait suspect, APT_ pour l’outillage d’un acteur, EXPL_ pour un exploit, WEBSHELL_ pour un web shell et PUA_ pour une application potentiellement indésirable.
- Quels champs meta chaque règle devrait-elle avoir ?
- Au minimum description, author, date et reference. Beaucoup de jeux ajoutent id, modified, score, hash et license.
- Existe-t-il un formateur officiel ?
- YARA-X fournit yr fmt, qui réécrit les règles dans une mise en page canonique. Le linter de ce site propose aussi un formateur prudent qui ne modifie que les espaces.