Le 2 juin 2022, une vulnérabilité d'exécution de code à distance de type zero-day, référencée CVE-2022-26134 et appelée « Confluence », a été découverte dans toutes les versions de Confluence Server et Data Center. Selon un avis de sécurité publié par Atlassian, cette attaque a été jugée très critique (CVSS : 9.0/10.0).
La vulnérabilité de gravité critique a reçu l'ID CVE-2022-26134, et un acteur malveillant peut l'exploiter pour exécuter du code à distance sans authentification par injection OGNL. L'année dernière, Confluence a également été confrontée à une vulnérabilité critique d'exécution de code à distance (CVE-2021-26084) dans Confluence Server et Confluence Data Center. Cette vulnérabilité provient d'une faille d'injection OGNL et permet à des attaquants non authentifiés d'exécuter du code arbitraire sur les instances Confluence Server ou Data Center.
Qu'est-ce qu'une injection d'OGNL ?
OGNL (Object-Graph Navigation Language) est un langage d'expression open source pour les objets Java. Il permet notamment l'évaluation d'expressions EL dans Apache Struts, framework populaire pour la création d'applications web Java en entreprise. Les failles les plus critiques d'Apache Struts sont liées aux attaques par injection d'expressions OGNL . Ces attaques permettent d'évaluer des expressions invalides par rapport à la pile de valeurs, offrant ainsi à un attaquant la possibilité de modifier des variables système ou d'exécuter du code arbitraire.
Analyse technique:
CVE-2022-26134 est une vulnérabilité d'exécution de code à distance, entraînant l'exécution de code dans le contexte du serveur Confluence. Un acteur malveillant cherchant à exploiter cette vulnérabilité placera la charge utile malveillante dans l'URI d'une requête HTTP. Toutes les méthodes HTTP semblent fonctionner, qu'elles soient valides (GET, POST, PUT, etc.) ou non.
La forme la plus simple d'une URL contenant une charge utile malveillante sera :
%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/r7%22%29%7D/
Ci-dessus, l'exploit est codé en URL. Lors du décodage de l'URL, nous obtenons l'exploit suivant :
${@java.lang.Runtime@getRuntime().exec(“touch /tmp/r7”)} , qui créera un nouveau fichier dans le répertoire /tmp/ .
Dans le trafic de requête GET capturé ci-dessous, vous pouvez voir que l'acteur de la menace effectue une injection OGNL pour profiter de la vulnérabilité présente dans la confluence.

Fig. 1
Les acteurs de la menace qui cherchent à exploiter cette vulnérabilité mais qui ont également besoin de la réponse du serveur compromis peuvent utiliser l'en-tête X-Cmd-Response.
Par exemple, il exécute la commande id et reçoit la sortie dans l'en-tête X-Cmd-Response de la réponse du serveur vulnérable.
Fig. 2
Cause première:
La cause principale de la vulnérabilité réside dans la méthode findValue(str) de la fonction translateVariables. Le serveur appelle la méthode translateVariables dès réception de la requête HTTP.
Lorsque la méthode TextParseUtil est appelée avec l'URI de requête donnée comme paramètre d'expression dans la méthode, après avoir compilé la chaîne et l'avoir supprimée du modèle « \\\\$\\\\{([^}]*)\\\\} », le code restant est transféré à la méthode findValue, qui dans ce scénario exécute le code.

Fig. 3
Comme mentionné précédemment, le problème principal réside dans l'appel à translateVariables avec l'URI comme argument. Le correctif fourni par Atlassian inclut plusieurs modifications.
La première consiste à ajouter une vérification d’expression sécurisée pour l’expression d’entrée dans la méthode findValue.
La deuxième consiste à définir les variables finalNamespace et finalActionName sans utiliser la méthode translateVariables.
Le dernier changement consiste à supprimer OgnValueStack, étant donné qu'il n'est pas utilisé si les fonctions translateVariables ne sont pas appelées.
Avant le patch :

Fig. 4
Après le patch :

Fig. 5
Atlassian a également inclus SafeExpressionUtil.class dans le fichier jar xworks. Pour analyser les expressions lors de l'appel de findValue, SafeExpressionUtil.class a été intégré à OgnlValueStack.class afin de filtrer les expressions non sécurisées. Par exemple :

Fig. 6
Comment Quick Heal protège ses utilisateurs
Quick Heal offre une protection complète contre l'exploitation de ce type de vulnérabilité. Le module HIPS de QH identifie et bloque les activités malveillantes telles que le trafic réseau, les fichiers malveillants et les adresses IP malveillantes afin de protéger nos clients.
Points forts de la détection
Basé sur un fichier
· Exp.CVE-2022-26134.46649
· Exp.CVE-2022-26134.46650.GC
· JS.Backdoor.38151
· ELF.Trojan.45098.GC
· Script.Trojan.44757
Basé sur le réseau
· HTTP/CVE-2022-26134!RP.46663
· HTTP/CVE-2022-26134!RP.46665
· HTTP/CVE-2022-26134!RP.46686
· HTTP/CVE-2022-26134!RP.46687
CIO
Hachages
· 4c02c3a150de6b70d6fca584c29888202cc1deef
· 80b327ec19c7d14cc10511060ed3a4abffc821af
· 75259ee2db52d038efea5f939f68f122
· ea18fb65d92e1f0671f23372bacf60e7
· 6078c8a0c32f4e634f2952e3ebac2430
· f8df4dd46f02dc86d37d46cf4793e036
· df096b253754a66cded9ad81b8ea27f5
· 3eb5db35032f5147761f7f8eb8e661c2
· de7a94deccdb9a274ed3c06b28993c0c
IPS
· 154.146.34.145
· 154.16.105.147
· 156.146.34.46
· 156.146.34.52
· 156.146.34.9
· 156.146.56.136
· 198.147.22.148
· 198.147.22.148
· 221.178.126.244
· 45.43.19.91
· 59.163.248.170
· 64.64.228.239
· 66.115.182.102
· 66.115.182.111
· 67.149.61.16
· 98.32.230.38



