RCE su vBulletin 5.x e 6.x sfruttando PHP 8.1: il nuovo exploit spiegato da EgiX
Il ricercatore di sicurezza Egidio Romano, noto anche come EgiX, ha recentemente pubblicato un’analisi approfondita su un exploit che colpisce le piattaforme vBulletin 5.x e 6.x, sfruttando una combinazione di due vulnerabilità (note come N-day): una novità introdotta in PHP 8.1+ relativa alla reflection API e una falla preesistente nel motore dei template di vBulletin.
L’attacco permette l’esecuzione di codice arbitrario da remoto (RCE) senza autenticazione.
L’origine dell’exploit: due vulnerabilità concatenate
L’exploit descritto da Romano si basa sull’interazione tra due distinte vulnerabilità:
- Invocazione di metodi protected tramite Reflection su PHP 8.1+
Con PHP 8.1, è possibile invocare metodi protetti e privati usando ad es. ReflectionMethod::invoke() senza dover richiamare esplicitamente setAccessible(true). In vBulletin, questa possibilità si traduce in un problema critico, poiché il framework API della piattaforma non implementa controlli adeguati sulla visibilità dei metodi. - RCE attraverso “template injection” nel motore di rendering di vBulletin
Il motore di template di vBulletin consente di creare interfacce dinamiche, dove il contenuto HTML può includere segnaposto o variabili che vengono valutate al volo prima della visualizzazione. Tuttavia, se non adeguatamente filtrati, questi template possono diventare un vettore di attacco.
Nel contesto dell’exploit analizzato da Egidio Romano (EgiX), la template injection consiste nel far sì che un contenuto controllato dall’utente venga inserito direttamente all’interno di un template e interpretato dal parser come codice da eseguire, invece che come semplice testo.
Dimostrazione tecnica: una doppia leva per ottenere RCE
Nel suo articolo, Romano dimostra come un attaccante possa sfruttare il routing dinamico delle API di vBulletin per invocare un metodo protected, nella fattispecie vB_Api_Ad::replaceAdTemplate(), normalmente inaccessibile. Questo metodo consente di creare un nuovo template.
Il passo successivo è sfruttare la vulnerabilità nel motore di template, facendo sì che i dati iniettati vengano interpretati come codice PHP. In questo modo, l’attaccante ottiene un’esecuzione remota di codice (RCE) sulla macchina che ospita vBulletin.
Riflessioni e considerazioni sulla sicurezza
Il lavoro di Egidio Romano evidenzia l’importanza di considerare l’impatto cumulativo delle vulnerabilità, specialmente quando si aggiornano componenti critici come il motore PHP. L’apparente innocua modifica al comportamento della reflection API in PHP 8.1 si è trasformata in una leva per accedere a metodi sensibili in vBulletin. Se a ciò si aggiunge l’esistenza di vecchie vulnerabilità non completamente mitigate nel sistema di template, si ottiene un vettore di attacco altamente efficace.
Romano invita gli sviluppatori di CMS e framework PHP a non affidarsi alla sola visibilità dei metodi (public, protected, private) come meccanismo di sicurezza, ma a introdurre controlli espliciti sulle autorizzazioni e sull’origine delle richieste.
Approfondimento
L’articolo completo con dettagli tecnici, codice PoC e analisi approfondita è disponibile sul blog ufficiale di EgiX: Don’t Call That ‘Protected’ Method: Dissecting an N-Day vBulletin RCE
L'articolo RCE su vBulletin 5.x e 6.x sfruttando PHP 8.1: il nuovo exploit spiegato da EgiX proviene da il blog della sicurezza informatica.