
Il 29 ottobre 2026 uno script di misurazione delle prestazioni fornito da un fornitore e caricato su polymarket.com è stato sostituito con codice malevolo. Ha sfruttato le sessioni aperte degli utenti per vendere le loro posizioni e trasferire i fondi. Polymarket rimborserà 3,9 milioni di dollari in totale e ha rafforzato il controllo degli script di terze parti.
Cosa è successo
In un rapporto sull’incidente pubblicato il 30 ottobre 2026, il mercato predittivo Polymarket spiega di aver rilevato attività non autorizzate sui wallet degli utenti il 29 ottobre alle 17:38 UTC. La causa non era il suo codice: un fornitore il cui script di misurazione delle prestazioni veniva caricato su polymarket.com era stato compromesso, e l’attaccante ha sostituito quello script con una versione rivolta agli utenti di Polymarket. Per una parte delle persone che avevano il sito aperto in una breve finestra di quel pomeriggio, lo script ha usato la sessione attiva per vendere posizioni e trasferire fondi fuori dai loro wallet.
Polymarket rimborsa 3,9 milioni di dollari in totale: 2,7 milioni per il furto e 1,2 milioni per le perdite dovute alla sospensione delle contrattazioni. Alla pubblicazione del rapporto, il 95% dei wallet colpiti era stato rimborsato integralmente. L’azienda non indica quanti utenti siano stati colpiti e ha segnalato il caso alle forze dell’ordine.
Come sono entrati gli attaccanti
Il sito si fidava del dominio del fornitore, quindi i browser eseguivano tutto ciò che quel dominio distribuiva. Secondo un’analisi di Hudson Rock, la Content Security Policy del sito consentiva quel dominio; lo script malevolo leggeva i dati di autenticazione salvati nel browser, individuava il client di trading nella pagina, poi chiedeva firme e inviava trasferimenti verso un indirizzo controllato dall’attaccante. Secondo The Record, il fornitore ritiene che i primi riscontri indichino una compromissione passata dal suo registrar di domini.
Cosa fare ora
- Censite gli script esterni dei vostri siti, per esempio con
curl -s https://www.example.com/ | grep -oE 'src=[^ >]+', e rimuovete quelli inutili, a partire dalle pagine di login, pagamento e area clienti. - Bloccate e verificate quelli rimasti: ospitate voi stessi una versione fissa, oppure aggiungete la Subresource Integrity ai file che non cambiano (hash generato con
openssl dgst -sha384 -binary file.js | openssl base64 -A), così un file modificato viene rifiutato. - Restringete la Content Security Policy: elenchi
script-srceconnect-srcprecisi, con la segnalazione delle violazioni attiva. Autorizzare un dominio non verifica ciò che distribuisce. - Monitorate le modifiche: calcolate regolarmente l’hash dei file di terze parti e fate scattare un avviso a ogni cambiamento.
- Preparate la risposta: dovete poter rimuovere uno script e azzerare tutte le sessioni in pochi minuti, come ha fatto Polymarket.
- Proteggete i vostri domini: autenticazione a più fattori e registrar lock sugli account presso il registrar.
Il nostro parere
Uno script caricato da un altro dominio gira con gli stessi diritti del vostro codice, dentro le sessioni dei vostri clienti. Un tag di analisi o di monitoraggio è raramente considerato critico, eppure qui è bastato per svuotare dei conti. Meno script di terze parti, versioni bloccate e controlli di integrità costano poco rispetto a rimborsi milionari.
Fonti
- Polymarket Status — Post-mortem of the 29 October 2026 incident
- The Record — Polymarket pledges to give $3.9 million back to victims after site compromise
- The Record — Polymarket confirms cyberattack involving third party
- Hudson Rock (Infostealers) — Polymarket breach alert: wallet-draining code found in a third-party script
Come scegliamo, verifichiamo e scriviamo le nostre analisi →
La porta d’ingresso è stata una terza parte. Verificate cosa espongono pubblicamente i vostri fornitori — senza intrusione, solo informazioni pubbliche:
Temi che i tuoi server siano esposti? Il nostro team verifica, aggiorna e monitora infrastrutture Linux e cloud 24/7.
Parla con un esperto I nostri servizi di gestione server →

