Se hai ricevuto una mia email che rimanda a questa pagina, è perché il tuo sito sembra utilizzare una versione di Link Library (il plugin WordPress di Yannick Lefebvre, che nei tuoi file si trova in /wp-content/plugins/link-library/) che rientra nell’intervallo interessato da un problema di sicurezza noto. Questa pagina spiega qual è il problema, come verificare quale versione hai, come aggiornare e cosa fare dopo.

Il problema è CVE-2026-16532, una vulnerabilità di SQL injection sfruttabile senza autenticazione, raggiungibile attraverso la gestione dell’invio dei link del plugin. Interessa tutti i rilasci precedenti alla 7.9.3 ed è corretta nella 7.9.3. Il rilascio corrente al momento in cui scrivo è la 7.9.4, che contiene anch’essa la correzione. Se utilizzi qualsiasi versione più vecchia della 7.9.3, aggiorna Link Library alla 7.9.3 o successiva.

Una cosa da chiarire: non esiste una versione più vecchia che sia sicura. Non è un difetto introdotto a un certo punto nella storia del plugin e poi corretto. Il codice vulnerabile è presente in ogni rilascio pubblicato che ho potuto controllare, fino alla versione più vecchia che la directory di WordPress.org serve ancora. «La mia installazione è troppo vecchia per essere interessata» qui non è una via d’uscita. Le uniche versioni non interessate sono la 7.9.3 e le successive.

Altrettanto importante: questo avviso non dipende da come è configurato il tuo sito. Link Library include un modulo che permette ai visitatori di proporre link, e l’ipotesi naturale è che un sito sia esposto solo se quel modulo è stato effettivamente pubblicato da qualche parte in una pagina. Quell’ipotesi è sbagliata. Il codice interessato viene eseguito a ogni normale richiesta sul front-end, che tu abbia pubblicato il modulo di invio oppure no, e le impostazioni predefinite del plugin non lo bloccano. Se il tuo sito utilizza una versione interessata, il codice è raggiungibile. Punto.

Si tratta di un difetto del plugin, non del core di WordPress. Un WordPress perfettamente aggiornato non ti protegge se il plugin Link Library è 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 inviargli qualcosa né di sfruttare alcunché.

Mi sono limitato a guardare file pubblici che il tuo sito serve a qualsiasi 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 nulla alla funzione di invio dei link del plugin, né sul tuo sito né su altri, e niente di questo controllo tocca i tuoi dati, la tua area di amministrazione o qualsiasi parte privata del 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

Link Library costruisce e mostra elenchi di link sul tuo sito, e può accettare proposte di link dai visitatori. È nella gestione delle proposte che risiede questo problema.

Nelle versioni interessate, quando il plugin elabora un link inviato, il controllo che verifica se quel link esiste già costruisce una query al database incollandovi direttamente i valori inviati. I valori vengono ripuliti per la visualizzazione, ma non sono sottoposti a escaping per l’uso in SQL, e la query viene eseguita senza un’istruzione preparata. La conseguenza è che un visitatore non autenticato può alterare quella query e leggere dati dal database del tuo sito. La versione 7.9.3 riscrive la query usando un’istruzione preparata, il che chiude il problema.

Per ripetere il punto già detto all’inizio, perché è quello che più facilmente dà false rassicurazioni: l’esposizione non dipende dal fatto che il modulo di invio sia pubblicato da qualche parte sul tuo sito. Il percorso di codice che elabora gli invii resta in ascolto a ogni richiesta sul front-end, e tutto ciò che serve a una richiesta per raggiungerlo può essere ricavato dal plugin stesso, senza che alcun modulo esista in alcuna pagina. Se il tuo sito sia esposto dipende da una sola cosa: la versione che utilizzi.

Vale anche la pena essere precisi su cosa questo problema è e cosa non è. Permette a un aggressore di leggere dati dal database. Questo è già grave di per sé, dato che un database WordPress contiene cose come gli indirizzi email degli utenti e le password sotto forma di hash, e su alcuni siti dati di clienti o di soci. Ma di per sé non è esecuzione di codice remoto, non è un’appropriazione del sito e non è un modo per un aggressore di assegnarsi un account amministratore. È più circoscritto dei problemi di compromissione totale di cui scrivo altrove, e preferisco definirne onestamente la portata piuttosto che lasciarti un’impressione più spaventosa di quanto i fatti sostengano.

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 il 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 è più vecchia della 7.9.3. Non ho verificato se il tuo sito specifico sia sfruttabile; ho osservato soltanto la versione.

Sono interessato?

Tutto si riduce a una domanda: quale versione di Link Library è installata?

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

  1. Accedi alla bacheca di WordPress (di solito su tuodominio.it/wp-admin).
  2. Vai su Plugin e poi Plugin installati.
  3. Individua Link Library, la voce la cui cartella è link-library, e leggi la versione indicata sotto il nome.

Dal manifesto pubblico (senza login): apri nel browser tuodominio.it/wp-content/plugins/link-library/readme.txt. La riga Stable tag: vicino all’inizio è la versione che la tua installazione dichiara, ed è lo stesso file pubblico che ho letto io. Per questo plugin ho verificato che corrisponde al codice effettivamente rilasciato in ogni rilascio recente, quindi è un controllo affidabile.

Un controllo che per questo plugin non funziona, quindi non farci affidamento. Se sei abituato a leggere le versioni dei plugin dal numero ?ver= allegato a uno script o a un foglio di stile nel codice sorgente della pagina, qui ti trarrà in inganno. I numeri di versione sugli URL delle risorse di questo plugin sono le versioni fisse di librerie di terze parti incluse nel pacchetto (valori come 4.0.1, 1.0.0 o 1.3.9), oppure la versione del core di WordPress. Nessuno di essi è la versione del plugin, e confrontarne uno qualsiasi con la 7.9.3 non ha senso. Usa la schermata di amministrazione oppure readme.txt.

Ancora un caso particolare: alcune installazioni molto vecchie mostrano Stable tag: trunk nel loro readme.txt. Non è affatto un numero di versione. Se lo vedi, usa invece la schermata dei plugin nell’amministrazione, e considera l’installazione interessata finché la schermata non ti dice il contrario, dato che un’installazione abbastanza vecchia da riportare trunk è sicuramente più vecchia della 7.9.3.

Applica poi questa regola:

  • Qualsiasi versione più vecchia della 7.9.3: interessata. Aggiorna. Non esiste una soglia al di sotto della quale un rilascio più vecchio torni a essere sicuro.
  • 7.9.3 o successiva: già corretta. Anche la 7.9.4, il rilascio corrente, contiene la correzione.

Come aggiornare

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

  1. Fai un backup del 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 di Link Library, installalo da qui.
  3. Se preferisci la riga di comando, WP-CLI fa la stessa cosa: wp plugin update link-library.
  4. Se non compare alcun aggiornamento, puoi ottenere l’ultimo rilascio direttamente dalla pagina del plugin nella directory di WordPress.org, Link Library, e aggiornare tramite Plugin, poi Aggiungi nuovo plugin, poi Carica plugin.
  5. Dopo l’aggiornamento, conferma il nuovo numero di versione (7.9.3 o successiva) seguendo i passaggi qui sopra, e verifica che i tuoi elenchi di link vengano ancora visualizzati e si comportino normalmente.

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

Dopo l’aggiornamento

Aggiornare alla 7.9.3 o successiva chiude il problema: il controllo sugli invii ora viene eseguito come istruzione preparata, quindi i valori inviati sono trattati come dati anziché come parte della query.

Cosa l’aggiornamento non può fare, detto con cautela. L’aggiornamento impedisce che in futuro vengano letti dati dal tuo database. Non può annullare la lettura di ciò che potrebbe essere già stato letto mentre il sito era su una versione interessata. Non ho alcuna visibilità su ciò che possa essere accaduto sul tuo sito, e non ho guardato; la maggior parte dei siti nell’intervallo interessato probabilmente non è mai stata toccata. Ma poiché non posso dirtelo con certezza, un po’ di prudenza è ragionevole, in proporzione a ciò che il tuo database contiene:

  • Se il tuo è un semplice sito editoriale, dove il database contiene i tuoi articoli, le tue pagine e una manciata di account utente, il passo sensato è far cambiare la password ai tuoi utenti (e soprattutto ai tuoi amministratori). WordPress salva le password sotto forma di hash, non in chiaro, ma gli hash di password deboli possono essere decifrati offline, quindi una password nuova elimina quel timore.
  • Se il tuo sito conserva qualcosa di più sensibile (dati di soci, informazioni sui clienti, chiavi API o altre credenziali custodite dai plugin), considera anche quelle come da sostituire.
  • Rigenerare le chiavi segrete e i «salt» di WordPress in wp-config.php (i nuovi valori sono a un clic dal generatore ufficiale) disconnette una volta tutti gli utenti e invalida eventuali token di sessione rubati.

Per essere chiaro sull’inquadramento: questa è una precauzione, non una dichiarazione che i tuoi dati siano stati sottratti. Questo avviso si basa su un numero di versione, non su qualche prova di un attacco.

Cosa ho fatto e cosa non ho fatto

Per essere del tutto trasparente sul controllo dietro la mia email: ho letto solo file pubblici che il tuo sito serve già a ogni visitatore, in particolare il file readme.txt pubblico del plugin e la tua home page. 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 nulla alla funzione di invio dei link del plugin, né sul tuo sito né altrove. Nulla è stato inviato, salvato, testato o sfruttato. Qui questo conta più che nella maggior parte di queste pagine, perché la gestione degli invii è esattamente ciò 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 più vecchia della 7.9.3. Un sito in quell’intervallo potrebbe già essere protetto per altre vie, per esempio da un web application firewall o da una correzione retroportata. Questo avviso non afferma che il tuo sito fosse sfruttabile nel momento in cui ho effettuato il controllo.

Non ho un webmaster / sono bloccato

Se non sei tu a occuparti del sito, inoltra questa pagina a chi lo fa (il tuo sviluppatore, 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