Se hai ricevuto un’email da me che ti rimanda a questa pagina, è perché il tuo sito web sembra eseguire una versione di Welcart e-Commerce (il plugin e-commerce gratuito per WordPress di Welcart / Collne, che si trova nei tuoi file in /wp-content/plugins/usc-e-shop/) che rientra nell’intervallo interessato da un problema di sicurezza noto. Questa pagina spiega di cosa si tratta, quanto è importante per il tuo sito, come leggere la tua versione senza farti ingannare e come aggiornare.

Il problema è CVE-2026-19914, una vulnerabilità di cross-site scripting (XSS) memorizzato non autenticato. Interessa ogni versione fino alla 2.12.1 inclusa ed è stato corretto nella 2.12.2, rilasciata il 31 agosto 2026. Se stai eseguendo la 2.12.1 o una versione precedente, aggiorna Welcart alla 2.12.2 o successiva. Il problema è valutato CVSS 7.2 (High), secondo la classificazione di Wordfence. Non sono a conoscenza di alcun codice di exploit pubblico per esso.

Non esiste alcuna versione precedente che sia sicura. Non si tratta di un difetto introdotto a un certo punto della storia del plugin e corretto in seguito. La resa senza escape all’origine di questo problema è stata presente per tutta la storia del plugin - ho confermato che è presente fin dalla versione 1.7.0 - quindi «la mia installazione è troppo vecchia per essere interessata» non è una via d’uscita qui. Le uniche versioni non interessate sono la 2.12.2 e successive.

Prima di ogni altra cosa, una parola su cosa sia questo problema e su come si concretizzi, perché preferisco dirlo chiaramente piuttosto che lasciare che l’avviso suoni più grande di quanto sia. Si tratta di una vulnerabilità di cross-site scripting memorizzato, e lo script che può eseguire viene eseguito nel browser di un amministratore del negozio, non nel browser di un visitatore. Perché ciò accada, devono verificarsi due cose distinte entrambe: qualcuno che effettua un ordine come ospite deve inviare un valore malevolo in un campo d’ordine personalizzato durante il checkout, e poi un amministratore deve aprire quell’ordine nella schermata di modifica degli ordini nell’area di amministrazione del tuo WordPress. Il valore inviato viene memorizzato insieme all’ordine e reso su quella schermata senza essere sottoposto a escape, quindi viene eseguito quando l’ordine viene visualizzato.

Posso leggere la tua versione di Welcart da un file pubblico, ma non posso vedere i tuoi ordini, non posso vedere se un ordine contiene un valore malevolo e non posso vedere se qualcuno lo abbia effettivamente fatto sul tuo sito. Perciò questo avviso è un avviso precauzionale basato sul tuo numero di versione, non un riscontro confermato riguardo al tuo sito.

Vale anche la pena di essere precisi su cosa sia e cosa non sia questo problema. Il cross-site scripting che scatta nella sessione di un amministratore è un problema reale che vale la pena correggere: uno script che viene eseguito mentre un amministratore è connesso può agire con i privilegi di quell’amministratore per tutto il tempo in cui la pagina è aperta. Ma non è, di per sé, un’acquisizione completa del sito. Non è esecuzione di codice da remoto sul tuo server, e non è un modo per uno sconosciuto non autenticato di assegnarsi semplicemente un account amministratore. È più circoscritto dei problemi di compromissione totale di cui scrivo altrove, e dipende sia dall’invio di un ordine sia dalla sua apertura da parte di un amministratore, quindi preferisco indicare la portata in modo onesto piuttosto che lasciarti con un’impressione più spaventosa di quanto i fatti sostengano.

Questo è un difetto del plugin, non un difetto del core di WordPress. Un WordPress completamente aggiornato non ti protegge se il plugin Welcart stesso è in una versione interessata.

Questo messaggio è legittimo?

Sì. Si tratta di un avviso di divulgazione responsabile e in buona fede da parte di un ricercatore di sicurezza indipendente. Non ti chiedo denaro, password o accesso al tuo sito, e non ho tentato di introdurmi in esso, di effettuare un ordine su di esso o di sfruttare alcunché.

Tutto ciò che ho fatto è stato guardare pagine e file che il tuo sito web fornisce a ogni visitatore (allo stesso modo in cui la tua homepage è pubblica) e annotare il numero di versione che il plugin pubblica. In particolare, non ho effettuato alcun ordine, non ho inviato nulla tramite il tuo checkout, non ho effettuato l’accesso e non ho inviato nulla alla funzionalità interessata. Nulla di questo controllo tocca i tuoi dati, la tua area di amministrazione, i tuoi ordini o qualsiasi parte privata del tuo sito (maggiori dettagli più sotto in Cosa ho fatto e cosa non ho fatto).

Se desideri verificare chi sono, consulta i recapiti in fondo a questa pagina e la pagina Chi sono.

Perché è importante

Welcart trasforma un sito WordPress in un negozio online ed è il plugin e-commerce più diffuso per WordPress in Giappone. Parte di ciò che fa è acquisire i dati di un cliente durante il checkout, inclusi eventuali campi d’ordine personalizzati che un negozio ha aggiunto per raccogliere informazioni aggiuntive, e memorizzarli insieme all’ordine affinché il personale possa esaminarli in seguito.

Nelle versioni interessate, un valore inviato in un campo d’ordine personalizzato durante un checkout come ospite viene memorizzato insieme all’ordine e poi mostrato nella schermata di modifica degli ordini nell’area di amministrazione del tuo WordPress senza essere sottoposto a escape. L’escape è ciò che riporta a semplice testo, per la visualizzazione, un testo che assomiglia a marcatura. Senza di esso, un valore predisposto per contenere contenuto attivo non viene mostrato come testo ma viene invece eseguito dal browser dell’amministratore che apre quell’ordine. Poiché un ospite può effettuare un ordine senza accedere, la persona che fornisce quel valore non ha bisogno di alcun account sul tuo sito.

Il presupposto, per dirlo chiaramente perché è la parte più facilmente fraintendibile in entrambe le direzioni: ciò richiede sia che sia stato inviato un ordine predisposto sia che un amministratore lo apra. Non scatta sulla tua vetrina e non fa nulla ai comuni visitatori. Ciò che raggiunge è la sessione di un amministratore del negozio che visualizza gli ordini in wp-admin.

Lo descrivo al livello di cui un proprietario di sito ha bisogno per agire, e non oltre. Non pubblico i dettagli che permetterebbero a qualcuno di riprodurlo, e ti chiederei di non provarlo contro il tuo sito o quello di chiunque altro. Leggere il tuo numero di versione, come descritto di seguito, ti dice tutto ciò che ti serve per decidere cosa fare.

Se la mia email citava questo problema, significa che la versione che il tuo sito riporta è la 2.12.1 o precedente. Non ho verificato se il tuo sito specifico sia sfruttabile, e non posso vedere i tuoi ordini. Tutto ciò che ho osservato è la versione.

Sono interessato?

Si riduce a una domanda: quale versione di Welcart stai eseguendo?

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

  1. Accedi alla tua dashboard di WordPress (di solito su yourdomain.com/wp-admin).
  2. Vai su Plugin e poi Plugin installati.
  3. Trova Welcart e-Commerce, la voce la cui cartella è usc-e-shop, e annota la versione mostrata sotto il suo nome.

Dal manifesto pubblico (nessun accesso necessario): apri

yourdomain.com/wp-content/plugins/usc-e-shop/readme.txt

in un browser e leggi la riga Stable tag: vicino all’inizio. Se quell’indirizzo restituisce un «non trovato», prova README.txt con le maiuscole - alcuni host fanno distinzione tra maiuscole e minuscole e alcuni pacchetti forniscono il file in maiuscolo.

Dal codice sorgente della tua pagina (nessun accesso necessario): visualizza il codice sorgente della tua homepage e cerca il foglio di stile proprio del plugin esattamente a questo percorso:

/wp-content/plugins/usc-e-shop/css/usces_default.css?ver=...

Il numero ?ver= associato a quel file è la versione propria del plugin, ed è la fonte pubblica che ho letto. Welcart carica questo foglio di stile sulle sue pagine del negozio, quindi una pagina del negozio o del carrello è un posto affidabile dove trovarlo. Leggi la versione solo da usces_default.css: altri file scritti nella tua pagina portano i propri numeri ?ver=, del tutto estranei, e leggere il primo che trovi può lasciarti con la versione di un software diverso. Se non riesci proprio a ottenere un numero leggibile dal codice sorgente della pagina, è comune e non è segno di nulla - i plugin di cache e di ottimizzazione rimuovono abitualmente il valore ?ver= dagli URL degli asset - quindi usa il readme.txt o la schermata di amministrazione.

Poi applica questa regola, e tieni presente che le versioni si confrontano numericamente, non alfabeticamente, quindi la 2.12.1 è più recente della 2.9.1 anche se «12» sembra più piccolo di «9» come testo:

  • 2.12.1 o precedente: interessata. Aggiorna alla 2.12.2 o successiva. Non esiste una soglia al di sotto della quale una versione più vecchia torni a essere sicura.
  • 2.12.2 o successiva: già corretta per quanto riguarda questo problema. Installare l’ultima versione disponibile è la mossa migliore.

Come effettuare l’aggiornamento

Il plugin è gratuito, ancora pubblicato e mantenuto attivamente, quindi la correzione è un normale aggiornamento. La via più sicura è aggiornare tramite WordPress stesso, e fare prima un backup:

  1. Esegui un backup del tuo sito (file e database) prima di apportare modifiche. La maggior parte dei provider di hosting offre backup con un clic, oppure usa 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 di Welcart, installalo da qui.
  3. Se preferisci la riga di comando, WP-CLI fa lo stesso: wp plugin update usc-e-shop (il comando usa il nome della cartella, non il nome visualizzato).
  4. Se non appare alcun aggiornamento, puoi ottenere l’ultima versione direttamente dalla pagina del plugin nella directory di WordPress.org, Welcart e-Commerce, e aggiornare tramite Plugin poi Aggiungi nuovo plugin poi Carica plugin.
  5. Dopo l’aggiornamento, conferma il nuovo numero di versione (2.12.2 o successiva) usando i passaggi sopra, e apri un ordine recente nella tua area di amministrazione per assicurarti che le schermate degli ordini vengano ancora visualizzate normalmente.

La versione 2.12.2 ha risolto anche altri problemi di sicurezza oltre a questo, quindi aggiornare vale comunque la pena. Già che ci sei, vale la pena confermare che il core di WordPress e gli altri tuoi plugin siano aggiornati, poiché lo stesso principio si applica a tutti.

Dopo l’aggiornamento

Aggiornare alla 2.12.2 o successiva chiude il problema, e per la maggior parte dei siti questo è tutto il compito. Questa pagina è un avviso precauzionale, non un rapporto di incidente: non ho alcuna visibilità su cosa sia successo sul tuo sito, e non ho guardato.

Vale la pena fare una piccola cosa finché l’aggiornamento è fresco:

  • Conferma che la versione sia effettivamente cambiata, con quello tra i controlli sopra che è stato più semplice, e apri un ordine nella tua area di amministrazione per assicurarti che le schermate degli ordini vengano ancora visualizzate.

Noterai che in questa pagina non c’è una lista di controllo del tipo «dai per scontato di essere stato compromesso», ed è deliberato e non un’omissione. Ciò che questo problema produce è uno script che viene eseguito nel browser di un amministratore, e solo laddove sia stato inviato un ordine predisposto e un amministratore lo abbia poi aperto. Non esegue codice sul tuo server e non crea di per sé un account amministratore, quindi l’audit degli amministratori e la rotazione delle password che raccomando dopo un difetto della classe acquisizione non sarebbero proporzionati qui. Aggiorna, conferma e prosegui. Se hai un motivo specifico per ritenere che ciò sia stato usato contro il tuo sito - cosa per cui questo avviso, basato solo su un numero di versione, non ti fornisce alcuna prova - allora è ragionevole trattare gli accessi dei tuoi amministratori con la consueta cautela, ma la versione da sola non lo richiede.

Cosa ho fatto e cosa non ho fatto

Per essere del tutto trasparente riguardo al controllo dietro la mia email: ho letto solo file che il tuo sito già fornisce a ogni visitatore, in particolare la tua homepage e l’indirizzo del foglio di stile di Welcart scritto in essa, e il readme.txt pubblico del plugin all’interno di wp-content/plugins/usc-e-shop/. Non ho avuto accesso alla tua area di amministrazione di WordPress, al tuo database, ai tuoi ordini o a qualsiasi parte privata del sito.

In particolare, non ho mai effettuato un ordine, inviato nulla tramite il tuo checkout, effettuato l’accesso o inviato nulla alla funzionalità interessata. Nulla è stato inviato, testato o sfruttato. Questo è importante qui, perché inviare un valore predisposto durante il checkout è molto vicino all’azione esatta di cui tratta questo problema, quindi «non l’ho toccato» è tutta la differenza tra una divulgazione e un’intrusione.

Inoltre, di proposito non pubblico i dettagli che aiuterebbero qualcuno ad agire su questo problema. La descrizione sopra si ferma al livello di cui un proprietario di sito ha bisogno, e non collego alcun codice proof-of-concept.

Questa è un’osservazione basata sulla versione: il tuo sito riporta una versione 2.12.1 o precedente. Non è un’affermazione che il tuo sito fosse sfruttabile al momento in cui l’ho controllato. Poiché questo problema dipende sia dall’invio di un ordine predisposto sia dalla sua apertura da parte di un amministratore - cose che non posso vedere - un sito nell’intervallo interessato potrebbe benissimo non essere stato esposto, e un sito in quell’intervallo può essere protetto separatamente con altri mezzi come un web application firewall o una correzione retroportata. Se hai già aggiornato, o altrimenti posto rimedio a questo, non è necessaria alcuna azione, e mi scuso per il disturbo.

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

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