Que sont les règles YARA ?
Les règles YARA sont des descriptions lisibles par l'humain, des signatures de correspondance de motifs, qui permettent aux analystes en sécurité d'identifier et de classer des logiciels malveillants (malware) à partir de motifs textuels ou binaires. YARA est lui-même un outil open source, souvent désigné comme « le couteau suisse de la correspondance de motifs pour les chercheurs en malware », et une règle YARA est une description unique rédigée dans son langage. Chaque règle associe un ensemble de motifs (chaînes de caractères, séquences d'octets hexadécimaux ou expressions régulières) à une condition booléenne qui détermine quand un fichier ou un processus correspond. La puissance de cette approche est qu'elle capture l'« ADN » durable d'une famille de malware, les fragments de code, les chaînes de configuration et les motifs structurels, plutôt qu'un simple hachage (hash) de fichier. Cela signifie qu'une règle bien écrite peut détecter de nombreuses variantes d'une menace, résistant aux mutations qui contournent la simple correspondance de hachage. YARA est largement utilisé par les chercheurs en malware, les chasseurs de menaces (threat hunters), les ingénieurs de détection et les équipes de réponse aux incidents dans les bacs à sable (sandboxes), les moteurs antivirus, les plateformes de cyber threat intelligence et les SIEM.
Ce qu'il faut retenir
- Une règle YARA est une empreinte digitale de logiciel malveillant. Elle décrit des modèles qui identifient une famille de logiciels malveillants, et non un simple fichier.
- Trois sections : meta, strings, condition. Des métadonnées pour le contexte, des modèles à rechercher et la logique booléenne qui détermine une correspondance.
- Elle résiste à la mutation. Parce qu'elle cible des modèles et une structure, une seule règle peut détecter de nombreuses variantes qui échappent à la détection par hachage.
- Créée par Victor Alvarez chez VirusTotal en 2007. Open source et publiée sur GitHub en 2013, elle est désormais une norme industrielle de fait.
- Utilisée tout au long du cycle de vie de la détection. Chasse aux menaces, réponse aux incidents, classification des logiciels malveillants et recherche rétrospective à grande échelle (retrohunt).
Qu'est-ce que YARA ?
YARA est un outil open source de correspondance de motifs multiplateforme (fonctionnant sur Linux, Windows et macOS) conçu pour aider les chercheurs à identifier et classer des échantillons de malware. Il a été créé par Victor Alvarez de VirusTotal en 2007, publié sur GitHub en 2013, et son nom est un acronyme récursif autodérisoire ("Yet Another Recursive Acronym"). Il peut être utilisé depuis la ligne de commande ou de manière programmatique via des bindings Python (yara-python), et il est livré avec des modules, comme les modules PE et ELF, qui permettent aux règles d'inspecter les caractéristiques structurelles des fichiers au-delà des motifs bruts.
En 2024, VirusTotal a annoncé YARA-X, une réécriture complète en Rust, qui a atteint une version stable en 2025 ; le YARA original est depuis passé en mode maintenance, bien que les concepts de règles restent identiques. Tout au long de cette page, "règles YARA" désigne le format de règles commun aux deux.
La structure d'une règle YARA
Chaque règle YARA suit une structure cohérente. Une règle commence par le mot-clé rule suivi d'un identifiant unique (et des tags optionnels pour la catégorisation), puis contient jusqu'à trois sections : meta, strings et condition. Voici l'exemple canonique fourni dans la documentation officielle de YARA :
rule silent_banker : banker {
meta:
description = "This is just an example"
threat_level = 3
in_the_wild = true
strings:
$a = {6A 40 68 00 30 00 00 6A 14 8D 91}
$b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
$c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
condition:
$a or $b or $c
}
Cette règle indique à YARA que tout fichier contenant l'un des trois motifs définis doit être signalé comme silent_banker. Les trois sections jouent chacune un rôle distinct.
meta (optionnelle)
Des informations descriptives qui n'affectent pas la correspondance mais sont essentielles pour la documentation et le partage : auteur, description (commençant conventionnellement par "Détecte..."), date, références, et souvent la sévérité ou les mappings de techniques MITRE ATT&CK. De bonnes métadonnées sont ce qui rend une règle maintenable par une équipe.
strings (optionnelle)
Les motifs à rechercher, chacun déclaré comme une variable avec le préfixe $. YARA prend en charge trois types : les chaînes de texte (texte ASCII ou Unicode littéral), les chaînes hexadécimales (séquences d'octets bruts, idéales pour les motifs de code) et les expressions régulières (pour une correspondance flexible). Des modificateurs les affinent, par exemple nocase (insensible à la casse), wide (UTF-16), ascii, fullword et xor (pour détecter les chaînes obfusquées par XOR sur un octet).
condition (obligatoire)
La logique booléenne qui détermine une correspondance. Elle combine les chaînes définies avec des opérateurs (and, or, not), des compteurs et des helpers comme any of them, des contraintes de taille de fichier (ex. filesize < 1MB), ou des vérifications de type de fichier. C'est là que se joue la précision d'une règle.
Comment fonctionnent les règles YARA
YARA analyse un fichier, un répertoire ou même la mémoire d'un processus en cours, évaluant la condition de chaque règle par rapport aux motifs qu'il trouve. Quand un fichier ou un processus satisfait la condition d'une règle, YARA le signale comme une correspondance et indique quelle règle a déclenché l'alerte. Parce que les règles décrivent des motifs plutôt que des hachages exacts de fichiers, elles détectent non seulement un échantillon connu mais aussi toute sa famille et ses futures variantes.
C'est l'avantage clé par rapport aux méthodes de signature qui s'appuient sur un seul hachage : les auteurs de malware mutent constamment leur code pour modifier son hachage, mais les chaînes sous-jacentes, les séquences d'octets et la structure ciblées par une bonne règle YARA ont tendance à persister. YARA est optimisé pour l'analyse à haute vitesse de grands ensembles de fichiers, ce qui le rend pratique à utiliser contre d'immenses corpus.
À quoi servent les règles YARA
Bonnes pratiques pour l'écriture de règles YARA
Rédiger des règles efficaces tient autant de l'art que de la technique. Quelques principes largement reconnus permettent de maintenir des règles précises et maintenables :
- Cibler des motifs uniques. S'appuyer sur des chaînes et des séquences d'octets distinctives du malware, pas des termes génériques comme "password" ou "error" qui apparaissent partout.
- Utiliser plusieurs échantillons. Dériver une règle de plusieurs échantillons d'une famille pour capturer ce qui est vraiment partagé, puis exiger deux à cinq motifs distinctifs avec la logique
AND. - Tester dans les deux sens. Valider contre l'ensemble complet d'échantillons de malware (tous doivent correspondre) et contre un corpus de fichiers propres (aucun ne doit correspondre) pour contrôler les faux positifs.
- Rédiger des métadonnées claires. Des noms de règles descriptifs et des champs
metacomplets rendent les règles partageables et maintenables par une équipe. - Surveiller les performances. Les règles s'exécutent contre chaque fichier analysé ; éviter les motifs trop larges et les expressions régulières lourdes, et profiler les jeux de règles utilisés à grande échelle.
- Ne jamais déployer sans tester. Tester les règles issues de la communauté ou d'internet contre des fichiers sains avant de les utiliser en production.
Éclairage expert : une règle ne vaut que par le renseignement qui la sous-tend
La difficulté dans l'écriture d'une règle YARA n'est pas la syntaxe. C'est de savoir quels motifs caractérisent véritablement une famille de malware et lesquels déclencheront des faux positifs, et cette connaissance provient d'une analyse approfondie et directe de nombreux échantillons. Une règle écrite à partir d'un seul échantillon tend à être soit trop étroite (elle manque des variantes), soit trop large (elle inonde les analystes de faux positifs). La valeur se crée en amont, dans la recherche qui identifie l'ADN durable d'une menace, et en aval, dans l'application de la règle à grande échelle sur les bonnes données.
C'est là qu'une approche fondée sur le renseignement sur les menaces fait la différence. L'équipe TDR interne de Sekoia rédige des règles YARA à partir de plusieurs échantillons, provenant de plateformes telles que VirusTotal, précisément pour qu'elles se généralisent à une famille de malware plutôt qu'à un seul fichier, et les utilise pour enrichir en continu sa compréhension des groupes malveillants et mettre à jour Sekoia Intelligence en conséquence. Parce que les règles YARA analysent les fichiers statiques, elles peuvent signaler des menaces avant l'exécution, ce qui complète la détection comportementale et par corrélation de la plateforme AI SOC Sekoia. Les règles ne sont pas des actifs statiques non plus : au fur et à mesure que l'équipe TDR suit l'évolution d'une famille, ses nouveaux comportements techniques et son infrastructure, les règles sont affinées pour détecter des variantes jusque-là inconnues, et ce renseignement parvient aux utilisateurs de la plateforme pour qu'ils puissent détecter les infections plus tôt. En tant qu'éditeur européen avec une posture de souveraineté des données, Sekoia associe des formats de détection ouverts et portables comme YARA à du cyber threat intelligence natif. Traitez YARA comme l'interface expressive d'un programme de détection, mais investissez dans l'analyse des malwares et le renseignement sur les menaces qui rendent les règles réellement efficaces.