CVE-2023-50780: MBeans peligrosos accesibles a través de la API de Jolokia en Apache ActiveMQ Artemis
Al listar e inspeccionar los MBeans expuestos por la API de Jolokia en http://127.0.0.1:8161/console/jolokia se han identificado los siguientes vectores de ataque:
- Escritura arbitraria de archivos usando Log4J que resulta indirectamente en ejecución remota de código
- Lectura arbitraria de archivos usando Log4J
- DoS usando MBeans del Broker de Artemis
Esta vulnerabilidad puede ser explotada por un atacante local que conozca las credenciales de autenticación básica utilizadas por la interfaz web de Artemis.
Nota: Si el servidor está configurado con --allow-anonymous, entonces cualquier combinación no nula de usuario y contraseña puede ser utilizada para autenticarse.
Divulgación del proveedor:
La divulgación del proveedor para esta vulnerabilidad se puede encontrar aquí.
Requisitos:
Esta vulnerabilidad requiere:
- Credenciales válidas para un usuario con rol "admin" (si la autenticación es requerida)
Prueba de concepto:
Como se han identificado múltiples vectores de ataque, puedes encontrar más detalles y los procesos de explotación de interés en uno o más de los siguientes PDFs:
- El informe inicial que fue enviado al proveedor: Apache Artemis - CVE-2023-50780 - Initial Report.pdf. El vector de RCE requiere:
- La capacidad de sobrescribir el archivo "broker.xml" como el usuario que ejecuta el servidor web
- Reiniciar toda la aplicación Artemis para que los cambios en "broker.xml" surtan efecto (aunque podemos aprovechar la función "forceFailover()" para cerrar la aplicación, aún requeriremos la interacción del usuario por parte de un administrador para reiniciarla)
- Apache Artemis - CVE-2023-50780 - WAR + Restart Vector.pdf. El vector de RCE requiere:
- La capacidad de sobrescribir uno de los archivos WAR cargados por Artemis (por ejemplo, "activemq-branding.war", "artemis-plugin.war" o "console.war") como el usuario que ejecuta el servidor web
- Reiniciar el servidor web Jetty embebido a través de la función "restartEmbeddedWebServer()" (no se requiere interacción del usuario, ya que esta función puede ser llamada directamente por el atacante a través del MBean del Broker de Artemis)
- Apache Artemis - CVE-2023-50780 - JAR + jvmtiAgentLoad.pdf. El vector de RCE requiere:
- La capacidad de escribir archivos en algún lugar del sistema de archivos (por ejemplo, "/tmp", "/dev/shm", "C:\Windows\Public", etc.) y aprovechar Log4J para escribir un JAR arbitrario en esa ubicación
- Cargar el JAR respectivo y obtener RCE a través de la función "jvmtiAgentLoad([Ljava.lang.String;)"
Recursos adicionales:
Blogpost por Xu "pyn3rd" Yuanzhen explicando cómo una escritura arbitraria de JAR + Jolokia se puede usar para obtener RCE
Cronología:
- Esta vulnerabilidad fue reportada inicialmente a [email protected] el 14-Feb-2023
- Apache divulga CVE-2023-50780 el 14-Oct-2024
- Divulgó públicamente el informe inicial y otros vectores el 18-Dec-2024