Se hai ricevuto una mia email che rimanda a questa pagina, è perché il tuo sito sembra utilizzare una versione di Drag and Drop Multiple File Upload for Contact Form 7 (il plugin WordPress elencato su WordPress.org con questo nome, di codedropz, che nei tuoi file si trova in /wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/) che rientra nell’intervallo interessato da un problema di sicurezza noto. Questa pagina spiega qual è il problema, come stabilire se riguarda il tuo sito, come leggere la tua versione senza essere tratto in inganno, e come aggiornare.

Nota bene: questa non è la versione per WooCommerce. Lo stesso autore pubblica un plugin separato, “Drag and Drop Multiple File Upload for WooCommerce” (cartella drag-and-drop-multiple-file-upload-for-woocommerce), che è un prodotto diverso con una propria numerazione di versione. Se il plugin presente nei tuoi file è quello per WooCommerce e non quello per Contact Form 7, questa pagina non lo riguarda. Tutto ciò che segue riguarda esclusivamente l’add-on per Contact Form 7.

Prima di tutto, il fatto più importante su questo avviso: una versione compresa nell’intervallo interessato non significa di per sé che il tuo sito sia esposto. Il problema descritto qui sotto entra in gioco solo sui siti che hanno un particolare tipo di campo di caricamento, e non posso vedere dall’esterno come sono configurati i tuoi moduli:

  • Il problema raggiunge solo un modulo di Contact Form 7 che ha uno dei campi di caricamento drag-and-drop di questo plugin impostato per accettare qualsiasi tipo di file.
  • Un campo che limita ciò che accetta a tipi specifici (per esempio immagini o PDF) non è esposto a questo problema, anche su una versione interessata. Limitare i tipi accettati è anche il comportamento predefinito quando un campo non li specifica.

Posso leggere la versione del tuo plugin da un file pubblico, ma non posso leggere la configurazione dei tuoi moduli, quindi questo avviso è un avvertimento precauzionale e non una scoperta confermata riguardante il tuo sito.

Il problema è CVE-2026-18781, una falla di caricamento file senza autenticazione nella gestione dei caricamenti del plugin. Interessa le versioni dalla 1.3.9.3 alla 1.3.9.8 ed è corretta nella 1.3.9.9. Se utilizzi una versione interessata, aggiorna Drag and Drop Multiple File Upload for Contact Form 7 alla 1.3.9.9 o successiva, e mantieni aggiornato anche Contact Form 7 stesso.

Una parola sull’urgenza, perché questo è un avviso condizionato. Se nessuno dei tuoi campi di caricamento accetta qualsiasi tipo di file, aggiornare è ordinaria manutenzione del plugin. Se anche uno solo lo accetta, considera l’aggiornamento una priorità: in quella configurazione la falla potrebbe permettere a un visitatore privo di qualsiasi account di salvare sul tuo server un file a sua scelta, di un tipo che il server potrebbe poi eseguire, il che può portare al controllo completo del sito.

Si tratta di un difetto del plugin, non del core di WordPress, ed è indipendente da Contact Form 7 stesso. Un WordPress perfettamente aggiornato, e un Contact Form 7 aggiornato, non ti proteggono se questo add-on è su una versione interessata.

Questo messaggio è legittimo?

Sì. È un avviso di divulgazione responsabile, in buona fede, da parte di un ricercatore di sicurezza indipendente. Non ti chiedo denaro, password o accesso al sito, e non ho tentato di entrarci, di inviare uno dei tuoi moduli, né di caricarvi alcunché.

Mi sono limitato a guardare file pubblicamente visibili che il tuo sito serve a ogni visitatore (allo stesso modo in cui la tua home page è pubblica) e ad annotare il numero di versione che il plugin pubblica. In particolare non ho inviato alcun modulo, non ho caricato alcun file, e non mi sono avvicinato alla funzione di caricamento del plugin. Niente in questo controllo tocca i tuoi dati, la tua area di amministrazione o qualsiasi parte privata del tuo sito (maggiori dettagli in Cosa ho fatto e cosa non ho fatto più sotto).

Se vuoi verificare chi sono, trovi i contatti in fondo a questa pagina e nella pagina Chi sono.

Perché è importante

Questo plugin aggiunge campi di caricamento file drag-and-drop ai moduli di Contact Form 7, così i visitatori possono allegare file quando inviano un modulo: una candidatura di lavoro, una richiesta di assistenza, una foto. Per mantenere tutto questo sicuro, il plugin dovrebbe rifiutare i tipi di file pericolosi.

Nelle versioni interessate, quel controllo poteva essere aggirato. Il plugin esaminava il nome del file caricato per decidere se il tipo era consentito, poi modificava il nome, e salvava il file senza controllare di nuovo il nome modificato. Poiché il nome veniva cambiato dopo essere stato approvato, era possibile predisporre un nome in modo che la versione controllata risultasse innocua mentre la versione effettivamente salvata non lo era, permettendo così a un tipo di file non consentito di finire sul server. Quando il server tratta poi quel file come qualcosa che può eseguire, il risultato è che il file di uno sconosciuto viene eseguito sul tuo sito.

Da questo derivano due conseguenze, che tirano in direzioni opposte. La prima è che questo problema conta solo dove un modulo ha un campo di caricamento configurato per accettare qualsiasi tipo di file. Dove ogni campo di caricamento è limitato a un insieme specifico di tipi, il file camuffato non corrisponde a un tipo consentito e viene respinto, quindi un sito in questo stato non è raggiungibile tramite questo problema. La seconda è che dove un campo che “accetta qualsiasi cosa” esiste davvero, non serve alcun account, alcuna password, né la collaborazione di nessuno: il modulo è aperto al pubblico per progettazione.

Sto descrivendo la cosa al livello che serve al proprietario di un sito per agire, e non oltre. Non pubblico i dettagli che permetterebbero a qualcuno di riprodurla, e ti chiedo di non provarci sul tuo sito né su quello di altri. Leggere la configurazione dei tuoi moduli e il tuo numero di versione, come descritto qui sotto, ti dice tutto ciò che serve per decidere cosa fare.

Se la mia email citava questo problema, significa che la versione dichiarata dal tuo sito rientra nell’intervallo interessato. Non ho verificato se il tuo sito specifico sia sfruttabile, e non posso vedere come sono configurati i tuoi moduli. Ho osservato soltanto la versione.

Sono interessato?

Sono due le domande che decidono, in quest’ordine.

Primo: un campo di caricamento accetta “qualsiasi tipo di file”?

Questa è la domanda decisiva, e solo tu puoi rispondervi. Controllare i tuoi moduli è del tutto sicuro ed è proprio lo scopo di questa pagina.

  1. Accedi alla bacheca di WordPress e apri Contatti (Contact Form 7) nella barra laterale.
  2. Apri ogni modulo che offre un caricamento di file, e individua il campo di caricamento drag-and-drop (il campo di questo plugin, aggiunto accanto ai tag standard di Contact Form 7).
  3. Verifica se quel campo limita i tipi di file che accetta.
  • Se ogni campo di caricamento è limitato a tipi specifici (per esempio jpg, png, pdf), questo problema non raggiunge il tuo sito, anche su una versione interessata. Aggiornare resta comunque utile come normale manutenzione.
  • Se anche un solo campo di caricamento è impostato per accettare qualsiasi tipo di file, il problema ti riguarda, e dovresti aggiornare tempestivamente. Limitare quel campo ai tipi che ti servono davvero è di per sé un passo sensato, ma la correzione vera è l’aggiornamento.

Ti chiedo di non provare a riprodurre il problema sul tuo sito né su quello di altri; non ne hai bisogno per rispondere alla domanda qui sopra.

Secondo: quale versione stai utilizzando?

Non devi fidarti sulla parola. Per questo plugin esiste un modo specifico di controllare che ti trarrà in inganno, quindi vale la pena leggere questa parte con attenzione.

Dall’area di amministrazione di WordPress (fonte autorevole):

  1. Nella tua bacheca di WordPress, vai su Plugin e poi Plugin installati.
  2. Individua Drag and Drop Multiple File Upload - Contact Form 7, la voce la cui cartella è drag-and-drop-multiple-file-upload-contact-form-7, e leggi la versione indicata sotto il nome.

Dal manifesto pubblico (senza login): apri nel browser tuodominio.it/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/readme.txt. La riga Stable tag: vicino all’inizio è la versione che la tua installazione dichiara, ed è una delle fonti pubbliche che ho letto io.

Dal codice sorgente della pagina (senza login): visualizza il codice sorgente di una pagina del tuo sito e cerca una delle risorse front-end del plugin esattamente in questi percorsi:

/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/css/dnd-upload-cf7.css?ver=...
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/js/codedropz-uploader-min.js?ver=...

Il numero ?ver= allegato a questi file, in questa cartella, è la versione del plugin stesso. Per questo plugin segue esattamente il rilascio, ed è per questo che lo considero una lettura affidabile.

La trappola da evitare qui. Il plugin separato per WooCommerce dello stesso autore include un file con lo stesso nome, codedropz-uploader-min.js, nella propria cartella (drag-and-drop-multiple-file-upload-for-woocommerce) con un numero di versione non correlato. Se leggi una versione dal codice sorgente della tua pagina, assicurati che la cartella nel percorso sia drag-and-drop-multiple-file-upload-contact-form-7 e non quella per WooCommerce; altrimenti starai leggendo la versione di un prodotto completamente diverso.

Applica poi questa regola, tenendo presente che le versioni si confrontano numericamente, non alfabeticamente:

  • Dalla 1.3.9.3 alla 1.3.9.8: potenzialmente interessata, in base alla domanda sul campo di caricamento vista sopra. Aggiorna subito.
  • 1.3.9.9 o successiva: già corretta per quanto riguarda questo problema. Prendere l’ultima versione disponibile è la scelta migliore.
  • Precedente alla 1.3.9.3: non interessata da questo problema. La falla specifica descritta sopra è stata introdotta con la 1.3.9.3. Detto questo, un rilascio così vecchio è molto indietro su tutto il resto, e aggiornare vale comunque la pena farlo, per motivi generali.

Se non riesci a ottenere una versione leggibile dai controlli qui sopra, non è insolito: i plugin di cache o di ottimizzazione rimuovono spesso il valore ?ver=, e le risorse compaiono solo dove il plugin viene caricato. La schermata di amministrazione del primo controllo ha sempre la risposta.

Come aggiornare

La strada più sicura è aggiornare tramite WordPress stesso, facendo prima un backup:

  1. Fai un backup del tuo sito (file e database) prima di apportare modifiche. La maggior parte degli hosting provider offre backup con un clic, oppure puoi usare un plugin di backup per WordPress.
  2. Nell’amministrazione di WordPress, vai su Bacheca e poi Aggiornamenti, oppure su Plugin e poi Plugin installati. Se è elencato un aggiornamento per questo plugin, installalo da qui.
  3. Se preferisci la riga di comando, WP-CLI fa la stessa cosa: wp plugin update drag-and-drop-multiple-file-upload-contact-form-7 (il comando utilizza il nome della cartella).
  4. Se non compare alcun aggiornamento, puoi ottenere l’ultimo rilascio direttamente dalla pagina del plugin nella directory di WordPress.org, Drag and Drop Multiple File Upload for Contact Form 7, e aggiornare tramite Plugin, poi Aggiungi nuovo plugin, poi Carica plugin.
  5. Dopo l’aggiornamento, conferma il nuovo numero di versione (1.3.9.9 o successiva) seguendo i passaggi qui sopra, e verifica che i tuoi moduli e i caricamenti di file funzionino ancora normalmente.

Già che ci sei, vale la pena verificare che il core di WordPress, Contact Form 7 e gli altri tuoi plugin siano aggiornati, dato che per tutti vale lo stesso principio.

Dopo l’aggiornamento

Aggiornare alla 1.3.9.9 o successiva chiude il problema, e per la maggior parte dei siti questo è tutto quello che serve fare. Questa pagina è un avviso precauzionale, non un rapporto di incidente: non ho alcuna visibilità su ciò che possa essere accaduto sul tuo sito, e non ho guardato.

Vale la pena considerare un follow-up, condizionato dalla stessa domanda sul campo di caricamento. Se il tuo sito aveva un modulo con un campo di caricamento che accettava “qualsiasi tipo di file” mentre era su una versione interessata, allora era almeno teoricamente possibile che un file fosse stato collocato sul tuo server. Aggiornare chiude la falla, ma non rimuove ciò che potrebbe essere già stato salvato, quindi in quel caso alcune precauzioni di routine sono sensate:

  • Controlla la tua cartella degli upload (di solito sotto wp-content/uploads/) alla ricerca di 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, gli accessi recenti e le sessioni attive alla ricerca di qualcosa che non riesci a spiegare.
  • Reimposta le password dei tuoi account amministratore. Rigenerare le chiavi segrete e i «salt» di WordPress in wp-config.php è un passo complementare sensato (i nuovi valori sono a un clic dal generatore ufficiale delle chiavi segrete, e sostituirli disconnette una volta tutti gli utenti).

Se trovi qualcosa che ti preoccupa, trattarlo come qualsiasi altro sospetto accesso non autorizzato è la risposta giusta. Se nessuno dei tuoi moduli aveva un campo di caricamento che accettava “qualsiasi tipo di file”, l’aggiornamento da solo è sufficiente.

Cosa ho fatto e cosa non ho fatto

Per essere del tutto trasparente sul controllo dietro la mia email: ho letto solo file che il tuo sito serve già a ogni visitatore, in particolare il readme.txt pubblico del plugin, la tua home page, e gli indirizzi delle risorse scritti in quella pagina. Non ho avuto accesso alla tua area di amministrazione WordPress, al database o ad alcuna parte privata del sito.

In particolare, non ho mai inviato uno dei tuoi moduli, non ho mai caricato un file, e non ho mai toccato la funzione di caricamento del plugin. Niente è stato inviato, testato o sfruttato. Qui questo conta più che nella maggior parte di queste pagine, perché caricare un file è esattamente l’azione a cui questo problema si riferisce, quindi “non l’ho toccata” è tutta la differenza tra una divulgazione e un’intrusione.

Deliberatamente non pubblico nemmeno i dettagli che aiuterebbero qualcuno ad agire su questo problema. La descrizione qui sopra si ferma al livello che serve al proprietario di un sito, e non collego alcun codice proof-of-concept.

Questa è un’osservazione basata sulla versione: il tuo sito dichiara una versione compresa nell’intervallo interessato. Non è un’affermazione che il tuo sito fosse sfruttabile nel momento in cui ho effettuato il controllo. Poiché il problema dipende da un’impostazione del modulo che non posso vedere, un sito in quell’intervallo potrebbe benissimo non essere affatto esposto, e un sito in quell’intervallo potrebbe separatamente essere protetto da altri mezzi, come un web application firewall.

Non ho un webmaster / sono bloccato

Se non sei tu a occuparti del sito, inoltra questa pagina a chi lo fa (il tuo sviluppatore web, la tua agenzia o il tuo hosting provider). Riconosceranno subito i passaggi qui sopra.

Se gestisci il sito da solo e ti blocchi, sono felice di indicarti la direzione giusta senza alcun costo. Scrivimi usando i contatti qui sotto.

Contatti

Evan Harris, ricercatore di sicurezza

Mi metto in contatto su questioni come questa solo per aiutare gli operatori a mettere in sicurezza i loro siti. Se preferisci non essere più contattato, basta dirmelo e lo rispetterò.

Riferimenti

Avvisi ufficiali e tracciamento

Fornitore / plugin