CVE-2023-50780: MBeans pericolosi accessibili tramite API Jolokia in Apache ActiveMQ Artemis
Elencando e ispezionando gli MBean esposti dall'API Jolokia all'indirizzo http://127.0.0.1:8161/console/jolokia, sono stati identificati i seguenti vettori di attacco:
- Scrittura arbitraria di file tramite Log4J che porta indirettamente all'esecuzione di codice remoto
- Lettura arbitraria di file tramite Log4J
- DoS tramite gli MBean del Broker Artemis
Questa vulnerabilità può essere sfruttata da un attaccante locale che conosce le credenziali di autenticazione di base utilizzate dall'interfaccia web di Artemis.
Nota: Se il server è configurato con "--allow-anonymous", qualsiasi combinazione non nulla di utente e password può essere utilizzata per autenticarsi.
Divulgazione del fornitore:
La divulgazione del fornitore per questa vulnerabilità è disponibile qui.
Requisiti:
Questa vulnerabilità richiede:
- Credenziali valide per un utente con ruolo "admin" (se l'autenticazione è richiesta)
Prova di concetto:
Poiché sono stati identificati più vettori di attacco, puoi trovare maggiori dettagli e i processi di sfruttamento di interesse in uno o più dei seguenti PDF:
- Il rapporto iniziale inviato al fornitore: Apache Artemis - CVE-2023-50780 - Initial Report.pdf. Il vettore RCE richiede:
- La capacità di sovrascrivere il file "broker.xml" come utente che esegue il server web
- Riavviare l'intera applicazione Artemis affinché le modifiche a "broker.xml" abbiano effetto (sebbene possiamo sfruttare la funzione "forceFailover()" per chiudere l'applicazione, sarà comunque necessaria l'interazione di un amministratore per riavviarla)
- Apache Artemis - CVE-2023-50780 - WAR + Restart Vector.pdf. Il vettore RCE richiede:
- La capacità di sovrascrivere uno dei file WAR caricati da Artemis (ad es. "activemq-branding.war", "artemis-plugin.war" o "console.war") come utente che esegue il server web
- Riavviare il server web Jetty integrato tramite la funzione "restartEmbeddedWebServer()" (nessuna interazione utente è richiesta poiché questa funzione può essere chiamata direttamente dall'attaccante tramite l'MBean del Broker Artemis)
- Apache Artemis - CVE-2023-50780 - JAR + jvmtiAgentLoad.pdf. Il vettore RCE richiede:
- La capacità di scrivere file da qualche parte nel file system (ad es. "/tmp", "/dev/shm", "C:\Windows\Public", ecc.) e di sfruttare Log4J per scrivere un JAR arbitrario in quella posizione
- Caricare il rispettivo JAR e ottenere RCE tramite la funzione "jvmtiAgentLoad([Ljava.lang.String;)"
Risorse aggiuntive:
Post del blog di Xu "pyn3rd "Yuanzhen che spiega come una scrittura arbitraria di JAR + Jolokia possa essere utilizzata per ottenere RCE
Cronologia:
- Questa vulnerabilità è stata inizialmente segnalata a [email protected] il 14-feb-2023
- Apache divulga CVE-2023-50780 il 14-ott-2024
- Divulgati pubblicamente il rapporto iniziale e gli altri vettori il 18-dic-2024