Vulnerabilità di Bricksforge sfruttata per remote code execution
La vulnerabilità di Bricksforge identificata come CVE-2026-85097 viene sfruttata attivamente per eseguire codice controllato dagli attaccanti sui siti WordPress, secondo la telemetria di Patchstack. La falla ha un punteggio CVSS di 10.0, la valutazione più alta nella scala standard di gravità delle vulnerabilità. Interessa le versioni di Bricksforge fino alla 3.1.8.9 inclusa ed è stata corretta nella versione 3.1.8.10. Patchstack ha osservato per la prima volta lo sfruttamento il 7 ottobre 2026 alle 21:47:17 UTC.
Bricksforge estende Bricks Builder, uno strumento visuale per creare siti web con WordPress. Aggiunge moduli avanzati, animazioni, interazioni personalizzate, gestione dei dati dinamici e personalizzazione del backend. Il componente vulnerabile è raggiungibile senza autenticazione, il che significa che un attaccante non ha bisogno di un account o di una password. Il problema consiste in una arbitrary file upload vulnerability, una debolezza che consente a un attaccante di collocare sul sito web un file di propria scelta. In questo caso, il file caricato può portare a remote code execution (RCE), ossia all'esecuzione da remoto di comandi o programmi sul server.
L'attacco funziona perché Bricksforge controlla un file in una fase, ma in una fase successiva considera attendibili informazioni fornite dall'attaccante. Durante l'upload iniziale, il plugin convalida il MIME type del file, un'etichetta che indica se il file è un'immagine, un documento o un altro tipo di contenuto. Tuttavia, quando successivamente viene inviato un modulo, non convalida correttamente il campo url all'interno del parametro temporaryFileUploads.
Un attaccante può innanzitutto richiedere un nonce valido dall'endpoint AJAX bricksforge_regenerate_nonce accessibile senza autenticazione. Un nonce è un valore di breve durata destinato a dimostrare che una richiesta è legittima, mentre AJAX è un metodo utilizzato dai siti web per scambiare dati senza ricaricare l'intera pagina. L'attaccante carica quindi un GIF/PHP polyglot, un singolo file che viene riconosciuto come immagine GIF ma contiene anche PHP, il linguaggio di programmazione comunemente usato per eseguire WordPress. Poiché il file appare come un'immagine, supera il controllo del MIME type ed entra nella directory temporanea di upload di Bricksforge.
Successivamente, l'attaccante invia un modulo nel quale il percorso del file lato server continua a puntare all'immagine approvata, mentre l'URL di destinazione fornito termina con un'estensione PHP. Bricksforge considera attendibili questi metadati e scrive il contenuto del file nella destinazione PHP. La richiesta del file risultante induce il server a eseguire il codice incorporato. Patchstack ha individuato l'elaborazione pertinente nei file bricksforge/includes/elements/pro-forms/actions/init.php e bricksforge/includes/elements/pro-forms/actions/base.php.
Uno sfruttamento riuscito fornisce all'attaccante arbitrary PHP execution. Patchstack afferma che questo accesso può essere utilizzato per installare web shells, file dannosi che consentono di mantenere il controllo remoto, modificare i contenuti del sito web, leggere informazioni sensibili e conservare un accesso persistente al sito.
Tutti i tentativi rilevati da Patchstack, tranne uno, hanno preso di mira l'endpoint REST API di Bricksforge per l'invio dei moduli all'indirizzo POST /wp-json/bricksforge/v1/form_submit. Una REST API è un'interfaccia attraverso la quale un software invia richieste strutturate a un'altra applicazione. La richiesta rimanente ha utilizzato /wp-admin/admin-ajax.php con l'azione bricksforge_form_submit. Ogni richiesta conteneva un parametro temporaryFileUploads manipolato.
Lo schema caratteristico era una mancata corrispondenza tra il percorso di un file immagine e una destinazione PHP. Nel 95% delle richieste acquisite, il percorso lato server terminava con .gif o .png, mentre la maggior parte di queste richieste lo associava a un URL di destinazione relativo a PHP. La maggior parte dei file veniva indirizzata attraverso /wp-content/uploads/bricksforge/tmp/. Alcuni tentativi utilizzavano nomi di file corrispondenti a login_admin_*.php e cercavano di collocarli nelle normali cartelle di upload di WordPress, inclusa /wp-content/uploads/2026/10/.
Gli attaccanti hanno inoltre variato i propri payload per verificare possibili metodi con cui aggirare i filtri delle estensioni. Patchstack ha registrato .php, .php5, .php7, .php8, .phtml, .pht, .phtm e .phps, oltre a forme con combinazioni di maiuscole e minuscole come .PHP, .Php, .pHp e .PHTML. I tentativi includevano forme codificate e doppiamente codificate negli URL, come %2ephp, .%70hp e .%2570%2568%2570. Altre richieste modificavano o omettevano i campi path, name, originalFilename e url per verificare come il plugin gestisse metadati incompleti o manipolati.
La telemetria di Patchstack mostra segnali di automazione coordinata. Un cluster comprendeva 44 indirizzi IP che hanno inviato 56 richieste identiche nell'arco di pochi secondi. Un altro comprendeva tre indirizzi che hanno testato 25 varianti di estensione e codifica sullo stesso file temporaneo. Patchstack ha affermato che questi schemi erano compatibili con attività automatizzate basate su proxy a rotazione o su un'infrastruttura distribuita, ma non erano sufficienti per attribuire la campagna a un singolo attore delle minacce.
In totale, Patchstack ha registrato 63 indirizzi IP sorgente unici. I sei più attivi hanno generato circa il 46% di tutte le richieste: 177.75.57.20 su EXPLORERNET, un ISP brasiliano di rete fissa; 23.97.62.146 su Microsoft Azure; 84.247.60.125 su HostRoyale; 38.154.185.97 su B2 Net Solutions; 150.109.16.166 su Tencent; e 153.75.90.146 su Cloudzy. AbuseIPDB mostrava rispettivamente 8, più di 1.270, 12, 11, 185 e 35 segnalazioni per questi indirizzi. CleanTalk riportava gli indirizzi di HostRoyale, B2 Net Solutions, Tencent e Cloudzy, ma non quelli di EXPLORERNET o Microsoft Azure.
L'infrastruttura comprendeva sistemi di data center, servizi cloud, servizi VPN o proxy e connessioni residenziali o di rete fissa. Patchstack ha descritto 177.75.57.20, l'indirizzo più attivo, come un caso anomalo perché apparteneva a un ISP brasiliano di rete fissa e non aveva quasi nessun precedente relativo ad attività illecite.
I proprietari e gli amministratori dei siti web devono aggiornare immediatamente Bricksforge alla versione 3.1.8.10 o successiva. È necessario controllare i log per individuare richieste ai due endpoint di invio dei moduli, l'uso di temporaryFileUploads, percorsi di immagini associati a destinazioni PHP, ripetute variazioni delle estensioni e chiamate a bricksforge_regenerate_nonce seguite da un upload e dall'invio di un modulo. Gli amministratori devono inoltre cercare file PHP inattesi nella cartella temporanea di Bricksforge o in altre directory di upload, in particolare login_admin_*.php, nonché richieste effettuate a file PHP appena creati.
I siti che hanno eseguito una versione interessata senza protezione richiedono un'analisi storica dei log e dell'ambiente di hosting per individuare modifiche non autorizzate, attività inspiegabili delle applicazioni e file PHP inattesi. Patchstack afferma che la propria regola di traffico RapidMitigate per CVE-2026-85097 era attiva prima del primo attacco osservato e blocca i tentativi segnalati senza modificare il codice del plugin, mentre prosegue il monitoraggio di nuovi payload e bypass. Per i proprietari che preferiscono non gestire autonomamente l'infrastruttura WordPress, AEU Hosting offre un hosting WordPress gestito e protetto end-to-end. L'aggiornamento di Bricksforge rimane la soluzione diretta per questa vulnerabilità.