Une nouvelle vulnérabilité dans les noyaux d’analyse de vulnérabilité open source pourrait potentiellement permettre aux attaquants de contourner la vérification de signature tout en introduisant du code malveillant dans des modèles qui s’exécutent sur des systèmes locaux.

Nuclei est un scanner de vulnérabilités open source populaire créé par Project Discovery qui analyse les sites Web à la recherche de vulnérabilités et d’autres faiblesses.

Le projet utilise un système d’analyse basé sur des modèles de plus de 10 000 modèles YAML qui analysent les sites Web à la recherche de vulnérabilités connues, de mauvaises configurations, de fichiers de configuration exposés, de webshells et de portes dérobées.

Les modèles YAML incluent également un protocole de code qui peut être utilisé pour exécuter des commandes ou des scripts localement sur un périphérique qui étend les fonctionnalités d’un modèle.

Chaque modèle est « signé » avec un hachage de résumé que Nuclei utilise pour vérifier que le modèle n’a pas été modifié pour inclure du code malveillant.

Ce hachage de résumé est ajouté au bas des modèles sous la forme de:

# digest: <hash>

La faille contourne la vérification de la signature des noyaux
Une nouvelle vulnérabilité Nuclei suivie sous le nom de CVE-2024-43405 a été découverte par des chercheurs de Wiz qui contourne la vérification de la signature de Nuclei même si un modèle est modifié pour inclure du code malveillant.

La faille est causée par une vérification de signature basée sur Go regex et par la façon dont l’analyseur YAML gère les sauts de ligne lors de la vérification de la signature.

Lors de la vérification d’une signature, la logique de vérification de Go considère \r comme faisant partie de la même ligne. Cependant, l’analyseur YAML l’interprète comme un saut de ligne. Cette incompatibilité permet aux attaquants d’injecter du contenu malveillant qui contourne la vérification mais est toujours exécuté lorsqu’il est traité par l’analyseur YAML.

Un autre problème est de savoir comment Nuclei gère plusieurs lignes de signature # digest:, car le processus ne vérifie que la première occurrence de # digest: dans un modèle, en ignorant toutes les autres trouvées plus tard dans le modèle.

Cela peut être exploité en ajoutant des charges utiles malveillantes supplémentaires « # digest: « après le résumé valide initial qui contiennent une section de « code » malveillante, qui est ensuite injectée et exécutée lorsque le modèle est utilisé.

« Armés des connaissances sur les interprétations de nouvelle ligne incompatibles, nous avons conçu un modèle qui exploite la disparité entre l’implémentation des expressions régulières de Go et l’analyseur YAML », explique Guy Goldenberg, chercheur chez Wiz.

« En utilisant \r comme saut de ligne, nous pouvons inclure une deuxième ligne # digest: dans le modèle qui échappe au processus de vérification de signature mais qui est analysée et exécutée par l’interpréteur YAML. »

Exemple de la façon dont les différents analyseurs analysent un modèle de noyaux

Wiz a divulgué de manière responsable la faille à Project Discovery le 14 août 2024, et elle a été corrigée dans Nuclei v3.3.2 le 4 septembre.

Si vous utilisez d’anciennes versions de Nuclei, il est fortement conseillé de mettre à jour la dernière version maintenant que les détails techniques de ce bogue ont été rendus publics.

Goldenberg recommande également que les noyaux soient utilisés dans une machine virtuelle ou un environnement isolé pour empêcher l’exploitation potentielle de modèles malveillants.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *