Los hackers robaron criptomonedas y posiciones de operadores de Polymarket después de que un código malicioso sustituyera un script de DebugBear cargado por el sitio web del mercado de predicciones el 29 de octubre. El código atacó a algunos operadores que ya habían iniciado sesión y utilizó sus sesiones activas para realizar transacciones no autorizadas.
Polymarket afirmó que reembolsará alrededor de 2,7 millones de dólares a 726 billeteras afectadas. Los registros de la cadena de bloques revisados por investigadores mostraron que aproximadamente 2,64 millones de dólares en tokens POL llegaron a la billetera de los atacantes en menos de una hora, sin incluir el valor de las posiciones sustraídas durante el incidente.
El archivo comprometido pertenecía a la herramienta de supervisión real de usuarios de DebugBear, que mide el rendimiento de carga de los sitios web. DebugBear afirmó que sus registros DNS habían sido comprometidos a través de su registrador de dominios y que sus hallazgos iniciales apuntaban a un ataque contra el sitio web de un cliente. La empresa dijo que no había encontrado pruebas de una intrusión en sus propios sistemas, aunque su investigación continuaba.
Investigadores de Hudson Rock descargaron el archivo malicioso desde la dirección que Polymarket utilizaba para cargar el script de DebugBear. También identificaron un cambio en el código del sitio web de Polymarket que eliminó el script. Investigadores de Ohey descubrieron que un servidor diferente comenzó a responder para las direcciones web de DebugBear a las 18:13 UTC, mientras el archivo malicioso seguía disponible. Más temprano ese día, la versión legítima se había servido desde Google Cloud Storage.
Cada cliente de DebugBear carga su propia copia del script, y el archivo sustituido era la versión utilizada por Polymarket. Según el análisis de Hudson Rock, el código reutilizó el acceso disponible para un operador que ya había iniciado sesión en una página abierta de Polymarket. Leyó información de la cuenta almacenada en el navegador, incluidas las claves API de operaciones.
Las claves API no podían colocar órdenes de forma independiente porque las transacciones de Polymarket también requieren una firma de billetera. Hudson Rock afirmó que no encontró pruebas de que el código enviara contraseñas, frases semilla, claves privadas o las claves API al servidor con el que se comunicaba. En su lugar, el script buscó las funciones de colocación de órdenes de Polymarket y el firmante utilizado para aprobar las transacciones.
Para los usuarios que conectaron sus propias billeteras de criptomonedas, el código podía transferir las posiciones directamente a la billetera de los atacantes. En el caso de las cuentas basadas en correo electrónico, podía vender las posiciones a precios progresivamente peores antes de transferir los ingresos. En ambos casos, el código solicitaba al firmante existente del usuario que aprobara las solicitudes y las enviaba al retransmisor de Polymarket. Hudson Rock señaló que crear una solicitud de firma no demuestra por sí solo que una transacción haya sido aprobada, ya que los proveedores de billeteras pueden exigir confirmación, rechazar la solicitud o aplicar reglas específicas de la sesión.
El análisis de la cadena de bloques realizado por Ohey mostró que la billetera incorporada en el código malicioso recibió sus primeros fondos a las 17:10 UTC y los últimos a las 18:02 UTC. Durante ese periodo, recaudó 28,6 millones de tokens POL y posiciones de 33 billeteras. A las 18:19 UTC, los POL tenían un valor aproximado de 2,64 millones de dólares, según un precio de 0,0922 dólares calculado por DefiPrime utilizando datos de DefiLlama. Posteriormente, la billetera envió los tokens a otras tres direcciones entre las 18:28 y las 18:38 UTC.
Polymarket publicó su primera actualización sobre actividad no autorizada en las billeteras de los usuarios a las 17:38 UTC. A las 18:05 UTC, afirmó que el intercambio había entrado en modo de solo cancelación y que las acciones del retransmisor estaban pausadas. La empresa dijo que eliminó el script en menos de una hora, borró sus cachés, restableció las sesiones de inicio de sesión activas y pausó las operaciones mientras limpiaba el sitio. El incidente también fue remitido a las autoridades.
Para el 30 de octubre, Polymarket afirmó que 689 de las 726 billeteras afectadas habían recibido reembolsos completos, mientras que las 37 restantes se estaban procesando después de una revisión. La empresa también está pagando por separado 1,19 millones de dólares a unas 5.500 billeteras afectadas por pérdidas durante la pausa de operaciones o por la sustracción de posiciones. En total, Polymarket afirmó que devolverá 3,9 millones de dólares a los operadores. Los usuarios no necesitan presentar una reclamación, aunque la empresa ofrece un formulario para quienes consideren que su pago fue incorrecto o no se realizó.
DebugBear recomendó a los clientes que utilizan su producto de supervisión que retiren de sus sitios web el código integrado. La dirección que sirvió el archivo malicioso, cdn.debugbear[.]com, no tenía ningún registro DNS cuando fue comprobada el 1 de noviembre.
Polymarket afirmó que planea restaurar los scripts de terceros con medidas de protección adicionales, entre ellas una Política de Seguridad de Contenido más sólida, versiones fijadas y aislamiento mediante sandbox. Hudson Rock recomendó a los sitios web evitar el código de terceros innecesario en las páginas utilizadas para operaciones o autenticación, aplicar la Integridad de Subrecursos cuando sea posible y revisar qué scripts de las páginas con sesiones iniciadas pueden solicitar firmas de billetera. También recomendó a los operadores rechazar las solicitudes de firma que no reconozcan.
Fuentes: The Hacker News.