Polymarket suspende el trading / un proveedor externo fue comprometido y vació fondos

Puntos clave

  • Polymarket activó el modo solo cancelación y pausó las acciones del relayer a las 18:05 UTC
  • Un trader reporta 800.000 $ vaciados; Polymarket dice que compensará a los afectados
  • La dirección receptora fijada en el script malicioso tenía 2,18 millones de $ en POL
Alex Numeris
Alex Numeris•
Compartir

Polymarket puso su exchange en modo solo cancelación y pausó las acciones del relayer el jueves 29 de octubre, después de que varios usuarios denunciaran salidas de fondos de sus cuentas sin permiso. La compañía confirmó más tarde que uno de sus proveedores externos fue comprometido y aseguró que todos los afectados serán compensados.

Cronología del incidente

Todo el episodio, desde el primer aviso hasta la resolución, duró una hora, según el historial de la página de estado de Polymarket.

Hora (UTC)

Estado

Mensaje

18:05

Investigando

Exchange en modo solo cancelación, acciones del relayer pausadas

18:37

Identificado

Problema corregido; proveedor externo comprometido, caso remitido a las autoridades

18:55

Monitorización

El trading se reanudará aproximadamente a las 15:00 ET

19:05

Resuelto

Incidente marcado como resuelto

En la actualización de las 18:37, Polymarket indicó que el problema afectó a su plataforma internacional, Polymarket.com, y que el trading se detuvo "por un exceso de precaución". La empresa publicó el mismo comunicado en X.

El script que vació las cuentas

Los investigadores de Hudson Rock descargaron cdn.debugbear.com/C7xcKKrjUnXK.js a las 18:12:06 UTC y encontraron un payload de 15.187 bytes con lógica para vaciar wallets, según su análisis publicado. DebugBear es un servicio de monitorización del rendimiento web.

La revisión no halló ninguna rutina que envíe claves privadas, contraseñas o frases semilla al atacante. En su lugar, el script reutilizaba la autoridad de la sesión que ya estaba abierta en el navegador:

  • Leía las entradas de almacenamiento local polymarket.auth.params, polymarket.auth.proxyWallet y poly_clob_api_key_map
  • Recorría los componentes internos de React para localizar el cliente de trading activo, buscando métodos como postOrder y createOrder
  • Calculaba el valor de la cartera y aplicaba umbrales de 10 para el valor total y 10 por posición
  • Cuentas EOA: construía una transferencia por lotes ERC-1155 de tokens de posición hacia el destinatario
  • Cuentas Magic: enviaba órdenes de venta a precios cada vez más agresivos y después transfería lo obtenido
  • Enviaba a data.debugbear.com la dirección de la wallet, la IP, el país, el valor de la cartera y los resultados de las transferencias

El código de producción de Polymarket contiene el mensaje de compilación "chore(polymarket): remove debugbear rum script (#15337)" con una marca de tiempo de las 17:59:20 UTC. Hudson Rock señala que la marca de tiempo de una compilación no establece el momento exacto del despliegue.

Pérdidas reportadas y dirección receptora

El trader Car (@CarOnPolymarket) afirmó que su cuenta fue vaciada de 800.000 $ y que todas sus posiciones se vendieron. La cifra es el reporte del propio usuario y Hudson Rock no la verificó on-chain.

La dirección 0x3F99139F1C5854bb628c2e576Aaf638e99dFfc18, fijada en el script como destinatario alternativo, mostraba los siguientes saldos en PolygonScan en el momento de la captura:

Activo

Valor

POL

2.178.191,78 $

Otros tokens

16.170,39 $

Total

aprox. 2,19 millones de $

Hudson Rock indica que el saldo no debe sumarse a la pérdida de 800.000 $, ya que ambas cifras pueden solaparse. Se desconocen el número de usuarios afectados, las pérdidas totales y el mecanismo inicial del compromiso.

Qué significa para ti

Si tenías Polymarket.com abierto con una sesión autenticada durante el incidente, Hudson Rock recomienda cerrar las pestañas expuestas y revisar órdenes recientes, movimientos de posiciones y transacciones de la wallet desde una sesión limpia.

  • Rechaza cualquier solicitud de firma o aprobación que no hayas iniciado tú
  • Revisa las sesiones activas y las credenciales de API siguiendo la guía de soporte de la plataforma
  • Desconectar una wallet no revierte las transferencias ya completadas ni revoca las aprobaciones on-chain
  • Evita los enlaces de "recuperación" de cuentas que no hayas solicitado y nunca compartas tu frase semilla
Compartir artículo