Polymarket a trecut exchange-ul în mod cancel-only și a pus pe pauză acțiunile relayer-ului joi, 29 octombrie, după ce utilizatorii au raportat fonduri care le ieșeau din conturi fără permisiune. Compania a confirmat ulterior că unul dintre furnizorii săi terți a fost compromis și că toți cei afectați vor fi despăgubiți.
Cronologia incidentului
Întregul episod, de la primul mesaj până la marcarea ca rezolvat, a durat o oră, conform istoricului publicat pe pagina de status Polymarket.
Ora (UTC) | Status | Mesaj |
|---|---|---|
18:05 | Investigare | Exchange în mod cancel-only, relayer pe pauză |
18:37 | Identificat | Problema remediată; furnizor terț compromis, caz trimis autorităților |
18:55 | Monitorizare | Tranzacționarea se reia la aproximativ 15:00 ET |
19:05 | Rezolvat | Incident marcat ca rezolvat |
În mesajul de la 18:37, Polymarket a precizat că problema a afectat platforma internațională Polymarket.com și că tranzacționarea a fost oprită temporar „din exces de precauție”. Compania a publicat aceeași declarație și pe X.
Scriptul care golea conturile
Cercetătorii de la Hudson Rock au descărcat fișierul cdn.debugbear.com/C7xcKKrjUnXK.js la 18:12:06 UTC și au găsit un payload de 15.187 octeți cu logică de golire a portofelelor, potrivit analizei publicate. DebugBear este un serviciu de monitorizare a performanței paginilor web.
Analiza nu a identificat nicio rutină care să trimită chei private, parole sau seed phrase-uri. Scriptul reutiliza, în schimb, autoritatea sesiunii deja autentificate în browser:
- Citea din local storage intrările polymarket.auth.params, polymarket.auth.proxyWallet și poly_clob_api_key_map
- Căuta în componentele React clientul de tranzacționare activ, cu metode precum postOrder și createOrder
- Calcula valoarea portofoliului și aplica praguri de 10 pentru total și 10 per poziție
- Pentru conturi EOA: construia un transfer batch ERC-1155 al tokenurilor de poziție către destinatar
- Pentru conturi Magic: plasa ordine de vânzare la prețuri tot mai agresive, apoi transfera fondurile rezultate
- Trimitea către data.debugbear.com adresa portofelului, IP-ul, țara, valoarea portofoliului și rezultatul transferurilor
Codul de producție al Polymarket conține mesajul de build „chore(polymarket): remove debugbear rum script (#15337)”, cu timestamp 17:59:20 UTC. Hudson Rock notează că un timestamp de build nu confirmă momentul exact al implementării.
Pierderi raportate și adresa destinatar
Traderul Car (@CarOnPolymarket) a scris că i-au fost sustrași 800.000 $ din cont și că toate pozițiile i-au fost vândute. Cifra este raportarea utilizatorului, nevalidată on-chain de Hudson Rock.
Adresa 0x3F99139F1C5854bb628c2e576Aaf638e99dFfc18, înscrisă direct în script ca destinatar implicit, apărea pe PolygonScan cu următoarele solduri la momentul capturii:
Activ | Valoare |
|---|---|
POL | 2.178.191,78 $ |
Alte tokenuri | 16.170,39 $ |
Total | aprox. 2,19 mil. $ |
Hudson Rock precizează că soldul nu trebuie adunat cu pierderea de 800.000 $, pentru că cele două se pot suprapune. Numărul utilizatorilor afectați, pierderile totale și mecanismul inițial al compromiterii rămân nestabilite.
Ce înseamnă pentru tine
Dacă ai avut Polymarket.com deschis cu sesiunea autentificată în timpul incidentului, Hudson Rock recomandă să închizi tab-urile expuse și să verifici ordinele recente, mișcările pozițiilor și tranzacțiile portofelului dintr-o sesiune curată.
- Respinge orice cerere de semnătură sau aprobare pe care nu ai inițiat-o tu
- Verifică sesiunile active și credențialele API conform ghidului de suport al platformei
- Deconectarea portofelului nu anulează transferurile deja executate și nu revocă aprobările on-chain
- Nu accesa linkuri de „recuperare” primite de la conturi necunoscute și nu oferi niciodată seed phrase-ul
