BlackHartBlackHart
Hacks Feed/Polymarket

Polymarket

May 22, 2026·Polygon·Key Compromise
$700K
total loss
StatusConfirmed
View current Polymarketscore →

An attacker stole roughly $700,000 worth of POL tokens from two of Polymarket's operational wallets on Polygon. The wallets paid out user rewards and managed Polymarket's prediction-market resolution contract; both had their private keys exposed. Customer deposits, open trades, and market settlements were not touched. The stolen funds were routed through Changenow, HTX, and KuCoin within hours.

User depositssafe
Open tradessafe
Market settlementssafe
USDC collateralsafe
Operational walletsdrained(~$700K POL drained)
What the score saw

Our pre-hack assessment of Polymarket flagged operational security as the weakest layer of its defenses. The exact failure mode, a single hot wallet without multisig protection, was already visible in our breakdown.

Exploit anatomy

The attacker held the private keys to Polymarket's reward wallet and admin wallet, drained them through a relay into the primary hub, and fanned the funds across 16 dispersal addresses to centralized exchanges.

Fund flow
Source
Reward wallet
Polymarket POL payout
0x871D7c0f...929082
Admin wallet
UMA CTF Adapter admin
0x91430CaD...14E5c5
Relay
Forwarding EOA
0xF43d55F3...Dd369D
Hub
Primary attacker
Polymarket Adapter Exploiter 1
0x8f98075d...9d9b91
Dispersal
16 split addresses
fresh EOAs, mostly nonce 1
Full forensic detail

Step-by-step reconstruction, root cause, counterfactuals, remediation, and disclosure timeline.

Exploit anatomy

1.
Attacker obtains the private key for Polymarket POL reward distribution wallet 0x871D7c0f9E19001fC01E04e6cdFa7fA20f929082. Exfiltration vector not publicly confirmed; consistent with cloud-credential leak, compromised CI/CD signing infrastructure, leaked .env in a deployment pipeline, or social-engineering of an operations team member.
2.
Attacker obtains the private key for the Polymarket UMA CTF Adapter Admin wallet 0x91430CaD2d3975766499717fA0D66A78D814E5c5 (Polygonscan tag: 'Polymarket: UMA CTF Adapter Admin', currently labeled COMPROMISED). Same vector inferred from simultaneous drain timing across both wallets.
3.
Around block 87,255,000 (2026-05-22 07:45 UTC), attacker initiates rapid sequential native POL transfers from 0x871D7c0f... to relay address 0xF43d55F3A8B7484Ed4B6931f93CB6F9eF5Dd369D. Each transaction is a plain value transfer (no calldata, gasLimit 21,000) of exactly 5,000 POL. Effective gas price ~415 gwei, extreme priority on Polygon, indicating the attacker was racing pause/key-rotation.
0x871D7c0f...929082native POL transfer (no calldata)tx:0xbd8c740d...3e2e68
4.
In parallel, UMA CTF Adapter Admin 0x91430Ca... is drained from ~26,680 POL to ~1 POL. Pattern is similar but at smaller scale. Drainage completes by block 87,257,587 (09:01 UTC).
0x91430CaD...14E5c5native POL transfer (no calldata)
5.
Relay 0xF43d55F3... (an EOA with 269 prior transactions, no source label) forwards aggregated POL to primary exploiter hub 0x8f98075db5d6c620e8d420a8c516e2f2059d9b91, labeled by Polygonscan as 'Polymarket Adapter Exploiter 1'.
0xF43d55F3...Dd369Dnative POL transfer
6.
Exploiter hub disperses POL into 16 fresh dispersal EOAs. Most addresses were funded once and immediately emptied (nonce=1, balance=0). Three still hold POL at investigation time (~304K POL total ≈ $28K): 0xc49531Cd..., 0x74D1cBD7..., 0xbCBBa967...
0x8f98075d...9d9b91native POL transfer (dispersal)
7.
Final-hop funds routed to CEX deposit addresses: Changenow 0xF2020cbf... and 0x6976d802..., HTX deposit 0x41ee2264..., KuCoin deposit 0xA285a440... Use of Changenow (a non-KYC swap aggregator) is consistent with rapid cross-asset/cross-chain conversion before recovery efforts complete.
CEX deposits / Changenow swaps
8.
ZachXBT publicly flags the attack on X with attacker addresses. Polymarket engineering lead confirms within hours: 'Findings point to a private key compromise of a wallet used for internal operations, not contracts or core infrastructure.' Polymarket states user deposits and market resolution are unaffected. Drain stops shortly after disclosure, consistent with key rotation by Polymarket.

Root cause

Polymarket operates a centralized hot-wallet stack on Polygon: a POL reward distribution wallet (0x871D7c0f...929082) and the UMA CTF Adapter administration wallet (0x91430Ca...14E5c5). Both are single-key EOAs with no on-chain timelock, no multisig, no MPC custody, no per-transaction value cap, and no automated outflow-velocity circuit breaker. The private key for at least one (likely both, given synchronized drain timing) was exfiltrated by the attacker. Once held, the key allowed unbounded signing of native POL transfers at the attacker's pace. The drain was operationally trivial, a Python script could execute the entire attack, and the attacker maximized priority gas (~415 gwei effective) to outrun any human reaction or automated revocation. No smart contract was bypassed, no oracle was manipulated, no governance vote was forged. The failure is in custody architecture: operational wallets controlling protocol-adjacent value should not be single-EOA hot keys without HSM or threshold custody. The EIP-7702 delegation present on the POL reward wallet (target: an EIP7702StatelessDeleGator at 0x63c0c19a...e32b) was Polymarket's own batch-execution scaffolding for legitimate payouts; it was NOT the attack vector, since the observed drain txs are plain type-2 native transfers with no calldata.

Prevention analysis

Migrate ops wallets to 2-of-3 or 3-of-5 multisig (Safe).

Attack becomes infeasible with a single key compromise. Would have required two coordinated compromises, with the second giving defenders time to revoke via key rotation. Trivial to implement on Polygon, no excuse for single-EOA custody of protocol-adjacent value.

MPC custody (Fireblocks / Coinbase Custody) for operational wallets.

Eliminates the single-key extraction vector entirely. Even if any single node is compromised, no party holds enough material to sign autonomously. Industry-standard for any operator at Polymarket's TVL scale.

On-chain velocity circuit breaker on operational wallets.

The 5,000-POL-per-30s pattern would have tripped a 1%-TVL-per-hour breaker within minutes. Drainage capped at ~$50-80K rather than $700K. The circuit breaker is a 30-line Solidity wrapper.

Realtime out-of-band alerting on wallet outflow rate (Forta, Tenderly, Hypernative).

ZachXBT detected this externally first; Polymarket detected after public disclosure. A simple Tenderly/Forta alert on outflow rate would have shaved the 3.5-hour drain window to <30 minutes.

Similar incidents

Drift Protocol

Operational private-key compromise enabling unilateral drain. Drift was via long-form social engineering + durable-nonce blind signing on a 2/5 multisig; Polymarket is via direct key exfiltration on a single-EOA hot wallet. Same root cause: weak operational security and centralized access.

Wintermute

Profanity vanity-address private-key recovery on operational hot wallet (Sep 2022, $160M). Same architectural anti-pattern: single-EOA hot key holding operational value with no HSM/MPC.

Transit Swap

Aggregator approval contract held EOA admin key that was leaked, allowing arbitrary token transfers (Oct 2022, $21M). Same key-custody anti-pattern.

Remediation

1.Immediately rotate ALL operational hot-wallet private keys on Polygon and any other chain Polymarket uses. Audit infrastructure (CI/CD secrets, deploy scripts, .env files, key management systems) that had access to the compromised keys for additional exposure.
2.Migrate all non-user-facing operational wallets to multisig (Safe) custody. For high-frequency reward distribution, use MPC custody (Fireblocks, Cobo, Coinbase Custody) instead of raw EOAs.
3.Add on-chain velocity circuit breaker: configurable max-outflow-per-block on operational wallets with automatic on-chain pause when exceeded. Auto-revocable only by multisig.
4.Implement realtime out-of-band alerting (Forta, Tenderly Web3 Actions, Hypernative) on operational wallets: >N transactions per minute, any single transfer >$X, any tx to a previously-unknown counterparty.
5.Pull the EIP-7702 delegation on 0x871D7c0f... if no longer needed; if retained, verify EIP7702StatelessDeleGator is independently audited and no signer-replacement caveat locks in delegation control across key rotations.
6.Publish full root-cause post-mortem within 72 hours: how the key was exfiltrated, what infrastructure had access, what changes have been deployed, what user-facing systems were verified untouched.done
7.Engage CEX coordination via TRM/Chainalysis to freeze the Changenow, HTX, and KuCoin deposit addresses before laundering completes. Three dispersal addresses still hold ~304K POL (~$28K) that may be recoverable if next-hop addresses are flagged at exchange ingress.
8.Re-audit operational security posture end-to-end: secret storage, key generation procedures, signer device hygiene, social-engineering resilience, supply-chain integrity of deployment dependencies.

Timeline

2026-05-22Block 87,255,000: high-priority sequential 5,000-POL drain begins from 0x871D7c0f... Effective gas price ~415 gwei.
2026-05-22Block 87,257,587: UMA CTF Adapter Admin 0x91430Ca... fully drained. POL reward wallet at ~351K POL remaining.
2026-05-22Block 87,260,327: sample attack tx 0xbd8c740d..., 5,000 POL transfer from 0x871D7c0f... to relay 0xF43d55F3...
2026-05-22ZachXBT publicly flags suspected exploit involving Polymarket UMA adapter / operational wallet on Polygon. Attacker addresses listed.
2026-05-22Polymarket engineering lead publishes clarification: 'Findings point to a private key compromise of a wallet used for internal operations, not contracts or core infrastructure.'
2026-05-22Block 87,262,566: drain has slowed; suspected pause/key-rotation in effect.
2026-05-22Funds dispersal across 16 addresses substantially complete. Multiple addresses forward to Changenow, HTX, KuCoin deposits.
ZachXBT (initial detection, attacker address graph), Lookonchain (independent confirmation), Polygonscan (address labeling), BlackHart (forensics, BRI assessment, dimensional impact)
Continuous adversarial monitoring

Get your protocol scored across 12 dimensions, or request ongoing coverage.