Polymarket a placé sa plateforme en mode annulation seule et suspendu les actions du relayeur jeudi 29 octobre, après que des utilisateurs ont signalé des sorties de fonds non autorisées de leurs comptes. L'entreprise a ensuite confirmé la compromission de l'un de ses prestataires tiers et indiqué que toutes les personnes touchées seraient indemnisées.
Chronologie de l'incident
L'épisode, de la première alerte à la résolution, a duré une heure, selon l'historique de la page de statut de Polymarket.
Heure (UTC) | Statut | Message |
|---|---|---|
18:05 | Investigating | Plateforme en mode annulation seule, actions du relayeur suspendues |
18:37 | Identified | Problème corrigé ; prestataire tiers compromis, signalement aux autorités |
18:55 | Monitoring | Reprise des échanges prévue vers 15 h (heure de l'Est) |
19:05 | Resolved | Incident déclaré résolu |
Dans la mise à jour de 18 h 37, Polymarket a indiqué que le problème touchait sa plateforme internationale, Polymarket.com, et que les échanges avaient été interrompus « par excès de prudence ». L'entreprise a publié le même message sur X.
Le script qui vidait les comptes
Les chercheurs de Hudson Rock ont téléchargé cdn.debugbear.com/C7xcKKrjUnXK.js à 18:12:06 UTC et y ont trouvé une charge utile de 15 187 octets contenant une logique de vidage de portefeuilles, selon leur analyse publiée. DebugBear est un service de suivi des performances web.
L'examen n'a révélé aucune routine envoyant clés privées, mots de passe ou phrases de récupération à l'attaquant. Le script réutilisait plutôt les droits de la session déjà ouverte dans le navigateur :
- Lecture des entrées de stockage local polymarket.auth.params, polymarket.auth.proxyWallet et poly_clob_api_key_map
- Exploration des composants internes de React pour trouver le client de trading actif, à la recherche de méthodes comme postOrder et createOrder
- Calcul de la valeur du portefeuille avec des seuils de 10 pour la valeur totale et de 10 par position
- Comptes EOA : création d'un transfert par lot ERC-1155 des jetons de position vers le destinataire
- Comptes Magic : envoi d'ordres de vente à des prix de plus en plus agressifs, puis transfert du produit
- Envoi à data.debugbear.com de l'adresse du portefeuille, de l'IP, du pays, de la valeur du portefeuille et du résultat des transferts
Le code de production de Polymarket contient le message de build « chore(polymarket): remove debugbear rum script (#15337) », horodaté à 17:59:20 UTC. Hudson Rock précise qu'un horodatage de build n'établit pas le moment exact du déploiement.
Pertes signalées et adresse du destinataire
Le trader Car (@CarOnPolymarket) affirme que son compte a été vidé de 800 000 $ et que toutes ses positions ont été vendues. Ce montant provient de l'utilisateur lui-même et n'a pas été vérifié on-chain par Hudson Rock.
L'adresse 0x3F99139F1C5854bb628c2e576Aaf638e99dFfc18, codée en dur dans le script comme destinataire de secours, affichait les soldes suivants sur PolygonScan au moment de la capture :
Actif | Valeur |
|---|---|
POL | 2 178 191,78 $ |
Autres tokens | 16 170,39 $ |
Total | env. 2,19 M$ |
Hudson Rock estime qu'il ne faut pas ajouter ce solde aux 800 000 $ de pertes, car les deux montants peuvent se recouper. Le nombre d'utilisateurs touchés, le total des pertes et le mécanisme de la compromission initiale restent inconnus.
Ce que cela change pour vous
Si Polymarket.com était ouvert avec une session authentifiée pendant l'incident, Hudson Rock recommande de fermer les onglets exposés, puis de vérifier depuis une session saine les ordres récents, les mouvements de positions et les transactions du portefeuille.
- Refusez toute demande de signature ou d'approbation que vous n'avez pas initiée
- Vérifiez les sessions actives et les identifiants API en suivant les consignes du support de la plateforme
- Déconnecter un portefeuille n'annule pas les transferts déjà effectués et ne révoque pas les approbations on-chain
- Évitez les liens de « récupération » envoyés par des comptes inconnus et ne communiquez jamais votre phrase de récupération
