Avviso di sicurezza Forminator Forms
Se hai ricevuto un’email da parte mia che ti rimanda a questa pagina, è perché il tuo sito sembra
eseguire una versione di Forminator Forms (il plugin WordPress di WPMU DEV, che si trova
nei tuoi file in /wp-content/plugins/forminator/) che rientra nell’intervallo interessato da un noto
problema di sicurezza. Questa pagina spiega di cosa si tratta, come stabilire se riguarda il tuo
sito, come leggere la tua versione senza essere fuorviati e come procedere all’aggiornamento.
Prima di tutto, il fatto più importante di questo avviso: una versione nell’intervallo interessato non significa di per sé che il tuo sito sia esposto. Il problema descritto di seguito si applica solo ai siti i cui moduli includono un campo di caricamento file, e non posso vedere come sono costruiti i tuoi moduli dall’esterno:
- Il problema riguarda solo un modulo Forminator che contiene un campo di caricamento file. Se nessuno dei tuoi moduli consente ai visitatori di caricare file, questo non ti riguarda, anche su una versione interessata.
- Nota che è la presenza di un campo di caricamento a essere rilevante, non la sua configurazione. Limitare un campo a tipi specifici (ad esempio immagini o PDF) non risolve il problema, perché la falla aggira tale restrizione. Quello che ti mette al riparo è non avere alcun modulo con un campo di caricamento file.
Posso leggere la versione del plugin da un file pubblico, ma non posso leggere i tuoi moduli, quindi questo avviso è un avvertimento precauzionale piuttosto che una scoperta confermata riguardante il tuo sito.
Il problema è CVE-2026-15748, una falla di caricamento file non autenticata nella gestione dei moduli del plugin. Interessa le versioni dalla 1.18.1 alla 1.56.1 ed è risolto nella versione 1.56.2, rilasciata il 30 luglio 2026. Se stai eseguendo una versione interessata, aggiorna Forminator Forms alla versione 1.56.2 o successiva (la versione attuale al momento della stesura è nella linea 1.57.x).
Una parola sull’urgenza, poiché si tratta di un avviso condizionato. Se nessuno dei tuoi moduli ha un campo di caricamento file, l’aggiornamento è una normale manutenzione del plugin. Se uno di essi ne ha uno, ti prego di trattare l’aggiornamento come una priorità: in quella configurazione la falla potrebbe permettere a un visitatore senza alcun account di salvare un file a sua scelta sul tuo server, di un tipo che il server potrebbe poi eseguire, il che può portare al controllo completo del sito.
Si tratta di una falla del plugin, non di una falla del core di WordPress. Un WordPress completamente aggiornato non ti protegge se il plugin Forminator stesso è su una versione interessata.
Questo messaggio è legittimo?
Sì. Si tratta di un avviso di divulgazione responsabile e di buona fede da parte di un ricercatore di sicurezza indipendente. Io non ti chiedo denaro, password o accesso al tuo sito, e non ho tentato di entrarci, di inviare nessuno dei tuoi moduli o di caricare nulla su di esso.
Ho solo esaminato i file visibili pubblicamente che il tuo sito web serve a ogni visitatore (allo stesso modo in cui la tua homepage è pubblica) e ho annotato il numero di versione che il plugin rende noto. In particolare non ho inviato alcun modulo, non ho caricato alcun file e non mi sono avvicinato al gestore di caricamento del plugin. Nulla in questa verifica tocca i tuoi dati, la tua area di amministrazione o qualsiasi parte privata del tuo sito (maggiori dettagli sotto Cosa ho fatto e cosa non ho fatto di seguito).
Se desideri verificare chi sono, consulta i dettagli di contatto in fondo a questa pagina e la pagina Chi sono.
Perché è importante
Forminator ti permette di creare moduli di contatto, quiz, sondaggi e moduli di pagamento, e alcuni di questi moduli possono offrire ai visitatori un campo di caricamento file in modo che possano allegare un documento o un’immagine. Per mantenere questa funzionalità sicura, il plugin dovrebbe controllare quali file accetta e dove li memorizza.
Nelle versioni interessate, questi controlli potevano essere aggirati. Un invio di modulo costruito appositamente poteva introdurre un valore di campo contraffatto attraverso la parte del plugin che salva una voce, e da lì nella routine di salvataggio del file, la cui lista di tipi di file vietati poteva essere aggirata con una richiesta appositamente strutturata. Il risultato è che un file che il plugin avrebbe dovuto rifiutare potrebbe essere scritto nella tua cartella di caricamento. Dove il server poi tratta quel file come qualcosa che può eseguire, il file di uno sconosciuto viene eseguito sul tuo sito.
Da ciò derivano due conseguenze, che tirano in direzioni opposte. La prima è che questo ha rilevanza solo dove un modulo ha effettivamente un campo di caricamento file; un sito i cui moduli non raccolgono caricamenti non è raggiungibile attraverso questo problema. La seconda è che dove tale campo esiste, non è necessario alcun account, nessuna password e nessuna cooperazione da parte di chiunque: il modulo è aperto al pubblico per progettazione. E qui c’è la parte più facilmente fraintesa: limitare quel campo a “solo immagini” o “solo PDF” non ti salva, perché la falla aggira il controllo del tipo del campo stesso. La domanda è semplicemente se un campo di caricamento file esiste su uno dei tuoi moduli.
Lo descrivo al livello di dettaglio necessario a un proprietario del sito per agire, e non oltre. Non sto pubblicando i dettagli che permetterebbero a qualcuno di riprodurlo, e ti chiedo di non provarlo contro il tuo sito o contro quello di chiunque altro. Verificare i tuoi moduli e la tua versione, come descritto di seguito, ti dice tutto ciò che devi sapere per decidere cosa fare.
Se la mia email ha citato questo problema, significa che la versione che il tuo sito riporta rientra nell’intervallo interessato. Non ho testato se il tuo sito specifico sia sfruttabile, e non posso vedere come sono costruiti i tuoi moduli. Ho osservato solo la versione.
Sono interessato?
Due domande decidono la questione, in questo ordine.
Primo: ha qualche modulo un campo di caricamento file?
Questa è la domanda decisiva, e solo tu puoi rispondere. Controllare i tuoi moduli è completamente sicuro ed è proprio lo scopo di questa pagina.
- Accedi alla bacheca di WordPress e apri Forminator nella barra laterale, poi Moduli.
- Apri ogni modulo e cerca un campo Upload (il tipo di campo di caricamento file di Forminator).
- Se nessuno dei tuoi moduli ha un campo di caricamento, questo problema non riguarda il tuo sito, anche su una versione interessata, sebbene l’aggiornamento sia comunque utile come manutenzione ordinaria.
- Se qualche modulo ha un campo di caricamento, il problema ti riguarda e dovresti aggiornare tempestivamente. Limitare il campo ai tipi di file di cui hai effettivamente bisogno è una buona pratica, ma non è una soluzione per questo problema: l’aggiornamento è la soluzione.
Ti prego di non provare a riprodurre il problema contro il tuo sito o contro quello di chiunque altro; non ne hai bisogno per rispondere alla domanda sopra.
Secondo: quale versione stai eseguendo?
Non devi prendere la mia parola per questo. Per questo plugin ci sono un paio di modi per verificare che potrebbero fuorviarti, quindi vale la pena leggere questa parte con attenzione.
Dall’area di amministrazione di WordPress (fonte autorevole):
- Nella bacheca di WordPress, vai su Plugin poi Plugin installati.
- Trova Forminator Forms, la voce la cui cartella è
forminator, e annota la versione mostrata sotto il suo nome.
Dalla sorgente della tua pagina (non è necessario il login): visualizza il codice sorgente di una pagina del tuo sito che visualizza un modulo Forminator e cerca una delle risorse front-end del plugin esattamente in questi percorsi:
/wp-content/plugins/forminator/build/front/front.multi.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/js/forminator-form.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/css/forminator-icons.min.css?ver=...
Il numero ?ver= allegato a quei file sotto la cartella forminator è la versione del plugin stesso. Per questo plugin segue il rilascio, motivo per cui lo considero una lettura affidabile.
Nota che le risorse appaiono solo su una pagina che effettivamente visualizza un modulo Forminator, quindi controlla una pagina
che ne ha uno (una homepage vuota senza moduli spesso non mostra nulla).
Due trappole da evitare qui. Entrambe fanno sì che una lettura ingenua riporti una versione che non ha nulla a che fare con Forminator:
- La libreria del numero di telefono inclusa. Forminator include una copia di una libreria di terze parti chiamata
intlTelInput, che ha il suo proprio numero di versione,
4.0.3. A seconda della tua versione si trova nel fileassets/css/intlTelInput.min.cssoassets/js/library/intlTelInput.min.js, entrambi all’interno della cartella di Forminator. Se leggi un?ver=4.0.3su uno di questi, quella è la versione della libreria, non di Forminator. Forminator non ha mai avuto una versione 4.x. Leggi solo i file elencati sopra e considera qualsiasi versione che non inizia con1.come “non la versione di Forminator”. - Il foglio di stile per modulo nella tua cartella di caricamento. Forminator scrive un piccolo foglio di stile per
ogni modulo pubblicato in un percorso come
/wp-content/uploads/forminator/<qualcosa>/style-<numero>.css?ver=<un lungo numero di 10 cifre>. Quel lungo numero è un timestamp, non una versione. Si trova sottowp-content/uploads/, non sotto la cartella del plugin, quindi ignoralo del tutto.
Un’altra nota specifica per questo plugin: la riga “Stable tag” del readme.txt incluso nel plugin non è
affidabile in questo caso, poiché può essere in ritardo rispetto al rilascio effettivo (sia la build 1.56.1 che la 1.56.2 riportano 1.56.0),
quindi a differenza di alcuni plugin, quel file non ti dirà quale delle due hai. Lo schermo di amministrazione
e il ?ver= delle risorse sopra sono le letture da fidarsi.
Poi applica questa regola, notando che le versioni si confrontano numericamente, non alfabeticamente:
- Dalla 1.18.1 alla 1.56.1: potenzialmente interessato, soggetto alla domanda sul campo di caricamento sopra. Aggiorna ora.
- 1.56.2 o successiva: già risolto per quanto riguarda questo problema. Prendere l’ultima versione disponibile (la linea 1.57.x al momento della stesura) è la mossa migliore.
- Precedente alla 1.18.1: non interessato a questo problema. La specifica debolezza descritta sopra è stata introdotta nella 1.18.1. Detto questo, un rilascio così vecchio è molto indietro su tutto il resto, e l’aggiornamento è utile per motivi generali.
Se non riesci a ottenere una versione leggibile dai controlli sopra, non è insolito: i plugin di caching o
di ottimizzazione rimuovono regolarmente il valore ?ver=, e le risorse appaiono solo dove un modulo
viene visualizzato. Lo schermo di amministrazione nel primo controllo ha sempre la risposta.
Come effettuare l’aggiornamento
Il plugin è gratuito, ancora pubblicato e attivamente mantenuto, quindi la correzione consiste in un normale aggiornamento. La procedura più sicura è aggiornare direttamente da WordPress, dopo aver effettuato un backup:
- Esegui il backup del tuo sito (file e database) prima di apportare modifiche. La maggior parte dei provider di hosting offre backup con un solo clic, oppure puoi utilizzare un plugin di backup per WordPress.
- Nell’amministrazione di WordPress, vai su Bacheca quindi Aggiornamenti, oppure Plugin quindi Plugin installati. Se è elencato un aggiornamento per Forminator, installalo da qui.
- Se preferisci la riga di comando, WP-CLI fa la stessa cosa:
wp plugin update forminator(il comando utilizza il nome della cartella). - Se non appare alcun aggiornamento, puoi ottenere l’ultima versione direttamente dalla pagina del plugin nella directory di WordPress.org, Forminator Forms, e aggiornare tramite Plugin quindi Aggiungi nuovo plugin quindi Carica plugin.
- Dopo l’aggiornamento, conferma il nuovo numero di versione (1.56.2 o successivo) utilizzando i passaggi sopra e verifica che i tuoi moduli e eventuali caricamenti di file funzionino normalmente.
Mentre sei in questa sezione, vale la pena verificare che WordPress core e i tuoi altri plugin siano aggiornati, poiché lo stesso principio si applica a tutti loro.
Dopo l’aggiornamento
L’aggiornamento alla versione 1.56.2 o successiva risolve il problema e, per la maggior parte dei siti, questo è l’unico compito necessario. Questa pagina è un avviso precauzionale, non un rapporto di incidente: non ho visibilità su quanto sia accaduto sul tuo sito e non ho effettuato controlli in tal senso.
Un controllo successivo vale la pena di essere considerato ed è condizionato dalla stessa domanda sui campi di caricamento file. Se il tuo sito aveva un modulo con un campo di caricamento file mentre eseguiva una versione interessata, allora era almeno teoricamente possibile che un file fosse stato posizionato sul tuo server. L’aggiornamento chiude la falla, ma non rimuove nulla che potrebbe già essere stato salvato, quindi in quel caso alcune precauzioni di routine sono consigliabili:
- Esamina la tua cartella di caricamento (tipicamente sotto
wp-content/uploads/, inclusa la sottodirectorywp-content/uploads/forminator/) per file che non riconosci, specialmente quelli che non sono del tipo di documenti o immagini che i tuoi moduli sono destinati a ricevere. - Rivedi i tuoi account amministratore, i recenti accessi e le sessioni attive per verificare eventuali attività non giustificabili.
- Reimposta le password dei tuoi account amministratore. Rigenerare le chiavi segrete e i salt di WordPress in
wp-config.phpè un passaggio complementare sensato (i nuovi valori sono a un clic di distanza dal generatore ufficiale di chiavi segrete, e il loro scambio disconnette tutti gli utenti una volta).
Se trovi qualcosa che ti preoccupa, trattarlo come faresti con qualsiasi altro accesso non autorizzato sospetto è la risposta corretta. Se nessuno dei tuoi moduli aveva un campo di caricamento file, l’aggiornamento da solo è sufficiente.
Cosa ho fatto e cosa non ho fatto
Per essere pienamente trasparente riguardo al controllo dietro la mia email: ho letto solo i file che il tuo sito serve già a ogni visitatore, specificamente il readme.txt pubblico del plugin, la tua homepage e gli indirizzi delle risorse scritti in quella pagina. Non ho avuto accesso all’area di amministrazione di WordPress, al tuo database o a qualsiasi parte privata del sito.
In particolare, non ho mai inviato nessuno dei tuoi moduli, non ho mai caricato un file e non ho mai toccato il gestore di caricamento del plugin. Non è stato inviato, testato o sfruttato nulla. Questo è più importante qui che nella maggior parte di queste pagine, perché il caricamento di un file è l’azione esatta a cui riguarda questo problema, quindi “non l’ho toccato” è la differenza totale tra una divulgazione e un’intrusione.
Sto anche deliberatamente non pubblicando i dettagli che potrebbero aiutare qualcuno ad agire su questo problema. La descrizione sopra si ferma al livello di cui ha bisogno un proprietario del sito e non collego alcun codice proof-of-concept.
Questa è un’osservazione basata sulla versione: il tuo sito segnala una versione nell’intervallo interessato. Non è un’affermazione che il tuo sito fosse sfruttabile al momento del mio controllo. Poiché il problema dipende dal fatto che uno dei tuoi moduli abbia un campo di caricamento file, che non posso vedere, un sito in quell’intervallo potrebbe non essere affatto esposto e un sito in quell’intervallo potrebbe essere separatamente protetto da altri mezzi come un firewall per applicazioni web.
Non ho un webmaster / Sono bloccato
Se non sei la persona che mantiene il sito, per favore inoltra questa pagina a chi se ne occupa (il tuo sviluppatore web, agenzia o provider di hosting). Riconosceranno rapidamente i passaggi sopra.
Se stai mantenendo il sito da solo e ti blocchi, sono felice di aiutarti indicando la direzione giusta senza costi. Contattami utilizzando i dettagli di contatto di seguito.
Contatti
Evan Harris, Ricercatore di sicurezza
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Mi metto in contatto riguardo a problemi come questo puramente per aiutare gli operatori a proteggere i loro siti. Se preferisci non essere contattato di nuovo, fammelo sapere e lo rispetterò.
Riferimenti
Avvisi ufficiali e tracciamento
Fornitore / plugin