CVE-2023-50780 : MBeans dangereux accessibles via l'API Jolokia dans Apache ActiveMQ Artemis
En listant et en inspectant les MBeans exposés par l'API Jolokia à l'adresse http://127.0.0.1:8161/console/jolokia, les vecteurs d'attaque suivants ont été identifiés :
- Écriture arbitraire de fichier via Log4J, entraînant indirectement une exécution de code à distance (RCE)
- Lecture arbitraire de fichier via Log4J
- Déni de service (DoS) via les MBeans du Broker Artemis
Cette vulnérabilité peut être exploitée par un attaquant local qui connaît les identifiants d'authentification de base utilisés par l'interface web Artemis.
Remarque : Si le serveur est configuré avec "--allow-anonymous", alors toute combinaison utilisateur-mot de passe non nulle peut être utilisée pour s'authentifier.
Divulgation au vendeur :
La divulgation du vendeur pour cette vulnérabilité est disponible ici.
Exigences :
Cette vulnérabilité nécessite :
- Des identifiants valides pour un utilisateur disposant du rôle « admin » (si l'authentification est requise)
Preuve de concept :
Comme plusieurs vecteurs d'attaque ont été identifiés, vous trouverez plus de détails et les processus d'exploitation concernés dans un ou plusieurs des PDF suivants :
- Le rapport initial envoyé au vendeur : Apache Artemis - CVE-2023-50780 - Initial Report.pdf. Le vecteur RCE nécessite :
- La capacité d'écraser le fichier « broker.xml » en tant qu'utilisateur exécutant le serveur web
- Le redémarrage de l'ensemble de l'application Artemis afin que les modifications de « broker.xml » prennent effet (bien que nous puissions utiliser la fonction « forceFailover() » pour fermer l'application, une interaction utilisateur de la part d'un administrateur sera toujours nécessaire pour la redémarrer)
- Apache Artemis - CVE-2023-50780 - WAR + Restart Vector.pdf. Le vecteur RCE nécessite :
- La capacité d'écraser l'un des fichiers WAR chargés par Artemis (par exemple « activemq-branding.war », « artemis-plugin.war » ou « console.war ») en tant qu'utilisateur exécutant le serveur web
- Le redémarrage du serveur web Jetty intégré via la fonction « restartEmbeddedWebServer() » (aucune interaction utilisateur n'est requise car cette fonction peut être appelée directement par l'attaquant via le MBean du Broker Artemis)
- Apache Artemis - CVE-2023-50780 - JAR + jvmtiAgentLoad.pdf. Le vecteur RCE nécessite :
- La capacité d'écrire des fichiers quelque part sur le système de fichiers (par exemple « /tmp », « /dev/shm », « C:\Windows\Public », etc.) et d'exploiter Log4J pour écrire un JAR arbitraire à cet emplacement
- Le chargement du JAR respectif et l'obtention d'une RCE via la fonction « jvmtiAgentLoad([Ljava.lang.String;) »
Ressources supplémentaires :
Article de blog par Xu « pyn3rd » Yuanzhen expliquant comment une écriture arbitraire de JAR + Jolokia peut être utilisée pour obtenir une RCE
Chronologie :
- Cette vulnérabilité a été initialement signalée à [email protected] le 14 février 2023
- Apache divulgue CVE-2023-50780 le 14 octobre 2024
- Divulgation publique du rapport initial et des autres vecteurs le 18 décembre 2024