CVE Junos SRX/EX vulnerability chains to RCE
JunOS SRX/EX Series : Chaînes de vulnérabilité pour RCE
CVE -2023-36844
CVE -2023-36845
CVE -2023-36846
CVE -2023-36847)
TL;DR
Versions affectées
- Juniper Networks Junos OS SRX Series:
- Toutes les versions antérieures à 20.4R3-S8;
- 21.1 version 21.1R1 et suivantes;
- 21.2 antérieures à 21.2R3-S6;
- 21.3 antérieures à 21.3R3-S5;
- 21.4 antérieures à 21.4R3-S5;
- 22.1 antérieures à 22.1R3-S3;
- 22.2 antérieures à 22.2R3-S2;
- 22.3 antérieures à 22.3R2-S2, 22.3R3;
- 22.4 antérieures à 22.4R2-S1, 22.4R3;
- Juniper Networks Junos OS EX Series :
- Toutes les versions antérieures à 20.4R3-S8;
- 21.1 version 21.1R1 et suivantes;
- 21.2 antérieures à 21.2R3-S6;
- 21.3 antérieures à 21.3R3-S5;
- 21.4 antérieures à 21.4R3-S4;
- 22.1 antérieures à 22.1R3-S3;
- 22.2 antérieures à 22.2R3-S1;
- 22.3 antérieures à 22.3R2-S2, 22.3R3;
- 22.4 antérieures à 22.4R2-S1, 22.4R3.
Détails
Dans le Baromètre des menaces du mois d’août 2023, nous avons évoqué le système de notation CVSS. Ce système, bien que particulièrement utile afin d’échanger des informations sur une vulnérabilité donnée, montre certaines limites, comme c’est le cas actuellement avec les vulnérabilités publiées par Juniper en date du 17 août 2023.
Prises individuellement, ces vulnérabilités ne dépassent pas le score de 5.3 sur l’échelle du CVSS (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N). Cependant, et comme le souligne l’éditeur dans sa note d’alerte, si ces vulnérabilités sont combinées lors d’une chaîne d’attaque, le score CVSSv3.1 passe à 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) soit un score de vulnérabilité critique.
Les vulnérabilités publiées sont les suivantes :
L’exploitation est relativement simple : dans un premier temps, utiliser les vulnérabilités liées à l’envoi d’un fichier arbitraire via les vulnérabilités CVE-2023-36846 ou CVE-2023-36847 dans le but de téléverser un fichier de configuration PHP ainsi qu’un fichier PHP. Puis dans un second temps, utiliser les vulnérabilités CVE-2023-36844 ou CVE-2023-36845 afin de permettre l’exécution du code envoyé.
En pratique, et dans le code qui a été publié, le point d’entrée utilisé est ` webauth_operation.php` qui permet d’être appelé sans authentification particulière. Ce point d’entrée attend 2 éléments en paramètres `rs` et `rsargs` représentant respectivement le nom d’une fonction à appeler parmi celles disponibles dans ce contexte, ainsi que ses paramètres.
La fonction utilisée dans la chaine d’attaque publiée est la fonction `do_upload` permettant l’envoi de fichier arbitraire.
Deux fichiers sont donc envoyés :
- Le fichier PHP contenant le code que nous souhaitons voir exécuter
- Un fichier de configuration PHP contenant la directive `auto_prepend_file` permettant d’inclure un fichier avant le fichier appelé.
Enfin, la deuxième série de vulnérabilité sera utilisée pour charger ce fichier de configuration et permettre l’exécution du code : une requête sera effectuée sur le même point d’entrée, simplement en effectuant une requête en spécifiant la variable `PHPRC` et en valeur le chemin vers le fichier de configuration qui a été préalablement envoyé.
Détection
A l’heure de la rédaction de cette note, il n’existe pas de règles disponibles afin de permettre la détection de ces attaques.
Voici quelques exemples de règles permettant de détecter ce comportement se basant sur le Proof of Concept publié :
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"GW CURRENT Request to webauth_operation (possible CVE-2023-36846/CVE-2023-36847)"; flow:established, to_server; http.uri; content: "/webauth_operation.php"; http.method; content: "POST"; http.request_body; content:"do_upload"; content:"fileName"; sid: 1000001; rev:1; metadata: provider Gatewatcher, signature_severity Major; reference:cve,2023-36846; reference:cve,2023-36847; )
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"GW CURRENT PHPRC variable on webauth_operation (possible CVE-2023-36844/CVE-2023-36845)"; flow:established, to_server; http.uri; content: "/webauth_operation.php"; content:"PHPRC="; distance: 1;sid: 1000002; rev:1; metadata: provider Gatewatcher, signature_severity Major; reference: cve,2023-36846; reference: cve,2023-36847;)
Il est cependant important de garder à l’esprit les points suivants :
- Ces règles sont basées sur la preuve de concept publiée mais d’autres variations sont peut-être possibles (via d’autres fonctions que do_upload ou d’autres points d’entrée que webauth_operation.php).
- Chaque système d’information étant unique, une règle doit toujours être testée avant d’être déployée en production.
- Dans le cas où le trafic vers J-Web est chiffré, il sera nécessaire de le déchiffrer pour détecter ce type d’activité.
Résolution
L’éditeur a d’ores et déjà mis à disposition les correctifs nécessaires, il est donc impératif de mettre à jour les équipements au plus vite.
Dans le cas où la mise à jour des équipements ne serait pas possible ou si le délai de mise à jour s’avère important, l’éditeur conseille de désactiver l’interface J-Web ou, a minima, de limiter cet accès à certains hôtes de confiances identifiés.
Auteur : Purple Team Gatewatcher
Ressources