Des hackers ont volé des cryptomonnaies et des positions de trading à des utilisateurs de Polymarket après qu’un code malveillant a remplacé, le 29 octobre, un script DebugBear chargé par le site du marché de prédiction. Le code a ciblé certains traders déjà connectés et utilisé leurs sessions actives pour effectuer des transactions non autorisées.

Polymarket a déclaré rembourser environ 2,7 millions de dollars à 726 portefeuilles concernés. Les registres de la blockchain examinés par des chercheurs ont montré qu’environ 2,64 millions de jetons POL avaient atteint le portefeuille des attaquants en moins d’une heure, sans compter la valeur des positions prises pendant l’incident.

Le fichier compromis appartenait à l’outil de surveillance réelle des utilisateurs de DebugBear, qui mesure les performances de chargement des sites web. DebugBear a déclaré que ses enregistrements DNS avaient été compromis par l’intermédiaire de son registraire de domaine et que ses premières constatations indiquaient une attaque visant le site web d’un client. L’entreprise a affirmé n’avoir trouvé aucune preuve d’une intrusion dans ses propres systèmes, même si son enquête se poursuivait.

Des chercheurs de Hudson Rock ont téléchargé le fichier malveillant depuis l’adresse utilisée par Polymarket pour charger le script DebugBear. Ils ont également identifié une modification du code du site de Polymarket qui supprimait le script. Des chercheurs d’Ohey ont constaté qu’un autre serveur avait commencé à répondre pour les adresses web de DebugBear à 18 h 13 UTC, alors que le fichier malveillant était encore disponible. Plus tôt ce jour-là, la version légitime avait été fournie depuis Google Cloud Storage.

Chaque client de DebugBear charge sa propre copie du script, et le fichier remplacé était la version utilisée par Polymarket. Selon l’analyse de Hudson Rock, le code a réutilisé l’accès disponible pour un trader déjà connecté à une page Polymarket ouverte. Il a lu des informations de compte stockées dans le navigateur, notamment des clés API de trading.

Les clés API ne pouvaient pas placer des ordres de manière autonome, car les transactions Polymarket nécessitent également une signature du portefeuille. Hudson Rock a déclaré n’avoir trouvé aucune preuve que le code avait envoyé des mots de passe, des phrases de récupération, des clés privées ou les clés API au serveur avec lequel il communiquait. Le script recherchait plutôt les fonctions de placement d’ordres de Polymarket et le signataire utilisé pour approuver les transactions.

Pour les utilisateurs qui avaient connecté leurs propres portefeuilles de cryptomonnaies, le code pouvait transférer directement les positions vers le portefeuille des attaquants. Pour les comptes fondés sur une adresse e-mail, il pouvait vendre les positions à des prix progressivement moins avantageux avant d’en transférer le produit. Dans les deux cas, le code demandait au signataire existant de l’utilisateur d’approuver les requêtes et les transmettait au relais de Polymarket. Hudson Rock a souligné que la création d’une demande de signature ne prouve pas à elle seule qu’une transaction a été approuvée, car les fournisseurs de portefeuilles peuvent exiger une confirmation, rejeter la demande ou appliquer des règles propres à la session.

L’analyse de la blockchain réalisée par Ohey a montré que le portefeuille intégré au code malveillant avait reçu ses premiers fonds à 17 h 10 UTC et ses derniers à 18 h 02 UTC. Durant cette période, il a collecté 28,6 millions de jetons POL ainsi que des positions provenant de 33 portefeuilles. À 18 h 19 UTC, les POL valaient environ 2,64 millions de dollars, sur la base d’un prix de 0,0922 dollar calculé par DefiPrime à partir de données de DefiLlama. Le portefeuille a ensuite envoyé les jetons à trois autres adresses entre 18 h 28 et 18 h 38 UTC.

Polymarket a publié sa première mise à jour concernant une activité non autorisée dans les portefeuilles des utilisateurs à 17 h 38 UTC. À 18 h 05 UTC, la plateforme a déclaré être passée en mode « annulation uniquement » et avoir suspendu les actions du relais. L’entreprise a indiqué avoir supprimé le script en moins d’une heure, vidé ses caches, réinitialisé les sessions de connexion actives et suspendu les échanges pendant le nettoyage du site. L’incident a également été signalé aux autorités compétentes.

Le 30 octobre, Polymarket a déclaré que 689 des 726 portefeuilles concernés avaient reçu des remboursements complets, les 37 autres étant traités après examen. L’entreprise verse séparément 1,19 million de dollars à environ 5 500 portefeuilles touchés par des pertes survenues pendant la suspension des échanges ou par des positions prises. Au total, Polymarket a déclaré restituer 3,9 millions de dollars aux traders. Les utilisateurs n’ont pas besoin de déposer une réclamation, même si l’entreprise fournit un formulaire aux personnes qui estiment que leur paiement était incorrect ou manquant.

DebugBear a conseillé aux clients utilisant son produit de surveillance de supprimer son code intégré de leurs sites web. L’adresse ayant servi le fichier malveillant, cdn.debugbear[.]com, n’avait aucun enregistrement DNS lors d’une vérification effectuée le 1er novembre.

Polymarket a déclaré prévoir de rétablir les scripts tiers avec des protections supplémentaires, notamment une politique de sécurité du contenu plus stricte, des versions verrouillées et une exécution en bac à sable. Hudson Rock a conseillé aux sites web d’éviter le code tiers superflu sur les pages utilisées pour le trading ou l’authentification, d’appliquer l’intégrité des sous-ressources lorsque cela est possible et d’examiner quels scripts présents sur les pages auxquelles les utilisateurs sont connectés peuvent demander des signatures de portefeuille. Il a également conseillé aux traders de rejeter les demandes de signature qu’ils ne reconnaissent pas.

Sources: The Hacker News.