Polymarket halts trading / third-party provider compromised, users report drained funds

Key points

  • Polymarket entered cancel-only mode and paused relayer actions at 18:05 UTC
  • One trader reports $800,000 drained; Polymarket says affected users will be made whole
  • Recipient address hard-coded in the malicious script held $2.18M in POL
Alex Numeris
Alex Numeris•
Share

Polymarket put its exchange in cancel-only mode and paused relayer actions on Thursday, October 29, after users reported funds leaving their accounts without permission. The company later confirmed that one of its third-party providers was compromised and said everyone impacted will be made whole.

Incident timeline

The whole episode, from first notice to resolution, lasted one hour, according to Polymarket's status page history.

Time (UTC)

Status

Message

18:05

Investigating

Exchange in cancel-only mode, relayer actions paused

18:37

Identified

Issue fixed; third-party provider compromised, referred to law enforcement

18:55

Monitoring

Trading to resume at approximately 3pm ET

19:05

Resolved

Incident marked as resolved

In the 18:37 update, Polymarket said the issue affected its international platform, Polymarket.com, and that trading was halted "out of an abundance of caution". The company posted the same statement on X.

The script that drained accounts

Researchers at Hudson Rock downloaded cdn.debugbear.com/C7xcKKrjUnXK.js at 18:12:06 UTC and found a 15,187-byte payload containing wallet-draining logic, according to their published analysis. DebugBear is a web performance monitoring service.

The review found no routine that sends private keys, passwords or seed phrases to the attacker. Instead, the script reused the authority of the session already logged in to the browser:

  • Read the local-storage entries polymarket.auth.params, polymarket.auth.proxyWallet and poly_clob_api_key_map
  • Traversed React component internals to find the live trading client, looking for methods like postOrder and createOrder
  • Calculated portfolio value and applied thresholds of 10 for total value and 10 per position
  • EOA accounts: built an ERC-1155 batch transfer of position tokens to the recipient
  • Magic accounts: submitted sell orders at increasingly aggressive prices, then transferred the proceeds
  • Reported wallet address, IP, country, portfolio value and transfer results to data.debugbear.com

Polymarket's production code contains the build message "chore(polymarket): remove debugbear rum script (#15337)" with a timestamp of 17:59:20 UTC. Hudson Rock notes that a build timestamp does not establish the exact moment of deployment.

Reported losses and the recipient address

Trader Car (@CarOnPolymarket) said his account was drained of $800,000 and that all his positions were sold. The figure is the user's own report and was not verified on-chain by Hudson Rock.

The address 0x3F99139F1C5854bb628c2e576Aaf638e99dFfc18, hard-coded in the script as its fallback recipient, showed the following balances on PolygonScan at the time of the capture:

Asset

Value

POL

$2,178,191.78

Other tokens

$16,170.39

Total

approx. $2.19M

Hudson Rock says the balance should not be added to the $800,000 loss, since the two may overlap. The number of affected users, total losses and the initial compromise mechanism remain unknown.

What it means for you

If you had Polymarket.com open with an authenticated session during the incident, Hudson Rock recommends closing exposed tabs and reviewing recent orders, position movements and wallet transactions from a clean session.

  • Reject any signing or approval request you did not initiate
  • Review active sessions and API credentials using the platform's support guidance
  • Disconnecting a wallet does not reverse completed transfers or revoke on-chain approvals
  • Avoid "recovery" links from unsolicited accounts and never share your seed phrase
Share article