WordPress è la piattaforma più utilizzata al mondo per la creazione di siti web, ma la sua popolarità la rende anche un bersaglio privilegiato per gli hacker. Recentemente, è emersa una grave vulnerabilità nel plugin GiveWP, utilizzato da oltre 100.000 siti per gestire donazioni online. Questo exploit potrebbe permettere a malintenzionati di rubare dati personali, indirizzi e persino informazioni sulle carte di credito degli utenti.
In questo articolo, analizzeremo nel dettaglio:
GiveWP è il plugin più utilizzato per ricevere donazioni su WordPress. Grazie alla sua facilità d’uso e integrazione con gateway di pagamento come PayPal, Stripe e altri, è la scelta preferita da organizzazioni no-profit, blogger e creator.
Tuttavia, proprio perché così diffuso, è diventato un obiettivo per i cybercriminali. La vulnerabilità scoperta riguarda il modo in cui GiveWP gestisce i dati degli utenti durante il processo di pagamento, sfruttando una falla nel PHP Object Injection.
WordPress è scritto in PHP, un linguaggio di programmazione Object-Oriented (OOP). In PHP, gli oggetti possono essere convertiti in stringhe tramite un processo chiamato serializzazione, che permette di:
wp_options
)Ecco un esempio di serializzazione in WordPress:
a:5:{i:0;s:35:"add-from-server/add-from-server.php";i:1;s:19:"jetpack/jetpack.php";i:2;s:27:"wp-super-cache/wp-cache.php";}
Questo testo rappresenta una lista di plugin installati, trasformata in una stringa serializzata.
Se un hacker riesce a modificare una stringa serializzata, può iniettare codice malevolo che viene eseguito quando WordPress la “deserializza”. Questo è particolarmente pericoloso quando:
__get
, __set
, __construct
o __destruct
GiveWP contiene una classe chiamata GiveInsertPaymentData
che gestisce gli indirizzi di fatturazione. Ecco il codice critico della vulnerabilità GiveWP:
namespace Give\PaymentGateways\DataTransferObjects;
final class GiveInsertPaymentData {
public $userInfo;
private function getLegacyBillingAddress() {
$donorDonationBillingAddress = $this->userInfo['address'];
$address = [
'line1' => $donorDonationBillingAddress->address1,
'line2' => $donorDonationBillingAddress->address2,
'city' => $donorDonationBillingAddress->city,
'state' => $donorDonationBillingAddress->state,
'zip' => $donorDonationBillingAddress->zip,
'country' => $donorDonationBillingAddress->country,
];
if (! $donorDonationBillingAddress->country) {
$address = false;
}
return $address;
}
}
$userInfo['address']
) viene preso direttamente dall’utente senza controlli.__get
della classe Give
per eseguire codice arbitrario.Ecco come funziona l’exploit:
__get
o __destruct
, questi vengono eseguiti, permettendo all’hacker di rubare dati o eseguire operazioni pericolose.Se utilizzi GiveWP, segui questi passaggi per evitare attacchi:
Il team di GiveWP ha rilasciato una patch. Assicurati di avere l’ultima versione installata.
Plugin come Wordfence o Sucuri possono bloccare tentativi di Object Injection.
Se possibile, evita di memorizzare dati serializzati in wp_options
. Usa invece formati più sicuri come JSON.
Controlla regolarmente le donazioni e verifica che non ci siano indirizzi strani o tentativi di pagamento anomali.
Se il sito viene compromesso, un backup recente ti permetterà di ripristinarlo rapidamente.
GiveWP è solo uno degli ultimi plugin vulnerabili scoperti. Con WordPress che alimenta oltre il 40% dei siti web, è fondamentale:
Se gestisci un sito che accetta pagamenti, non sottovalutare questo rischio. Aggiorna GiveWP immediatamente e adotta misure di sicurezza proattive per proteggere i tuoi utenti.
🔒 Proteggi il tuo sito oggi stesso prima che sia troppo tardi!
📌 Hai riscontrato problemi con GiveWP? Raccontaci la tua esperienza nei commenti!
Segui il nostro blog: Hackerlog.net per rimanere aggiornato su cybersecurity, hacking etico e difesa delle infrastrutture digitali.