Updated

Note

This report is built for a wider screen. It is fully readable here, but tables and diagrams are easier to follow on tablet or desktop.

WEMIX$ Stablecoin Exploit -- Case File

Incident: July 26, 2026 at 09:17:28 UTC (18:17 KST) · Network: WEMIX3.0 Mainnet

Case file v3.11 Technical path closed H12 residual open Attribution open Explorers + official blog

Technical path: closed on explorers + official WEMIX blog (mint path, amounts, helpers, bridges, containment). Still open (attribution only): CEX legal name, attacker real-world identity. Those need Foundation / exchange KYC / law enforcement, not more chain math.

This is an independent case reconstruction, not an official Foundation post-mortem. Primary data sources (always): (1) block explorers : WEMIX explorer, Etherscan, BscScan : for addresses, txs, logs, and balances; (2) official WEMIX blog / communication posts for Foundation numbers and response measures. Secondary (optional): reputed news articles only to cross-check public reporting : never as proof of on-chain facts. Function selector names may collide; treat names as likely and behavior as confirmed on explorers. Re-verify primary claims on explorer + official blog before treating as settled.

The Case in Brief

Bottom line
Net +5,225,525 WEMIX$ minted; realized $724,198.27 USDC.e and 30,736 WEMIX net. Matches Foundation figures. Full exit path: see Money flow.
How
The helpers' proxy setup path was never locked. Anyone who found it could claim Ownable on the minting authority. EIP-1967 proxies, not WEMIX$ owner-key theft. Stack diagram: Architecture.
Who
Signer EOA 0xc921a66e30745f11f8c7a7870e95640607ae7ea2 linked; person unknown. Gas via exchange distribution (~$5).
Status
Token-side mint revoked (isWhitelist=0 on helpers). Router still proxy Ownable. H12 Proxy Admin residual remains open: see Open residual risk.

Proxy Architecture

VAULT and Secondary Helper are EIP-1967 transparent proxies (identical 2,112-byte proxy bytecode). Mint logic lives in different implementations. Ownable lives in proxy storage. Shared Proxy Admin can upgrade either implementation.

WEMIX$ Token  [isWhitelist on helper proxy addresses]
     ^ mint/burn
VAULT Proxy (2,112 B)  Ownable=Router  -->  Impl A 0xbddd41457b55710fd0055b1cfbbc0b9be77a89c4 (16,443 B)
     ^ upgrade
Proxy Admin 0x465ea8f2dea0061dc177d4325ece33a0151af3f9 (nonce 1)
     v upgrade
0x01fa Proxy (2,112 B)  Ownable=Router  -->  Impl B 0x002ceee5624f60fee129549ffa6805a5ee49c759 (7,783 B)

Proxies: VAULT 0xd2947dbfdbdbb99702de6e46c63cb1968e21d95b · 0x01fa 0x01fa6cc8cd2f99b30e19d599fc002c3f2cac3d76 · Router 0xb6bdea4941f6fd4ea3918fac902494da100ac4d2. Earlier drafts incorrectly called the 2,112-byte code the full mint implementation.

Data sources (policy)

Primary (authoritative for this case file): chain explorers + official WEMIX blog.
Secondary (context only): reputed news when helpful for parent-company context or public narrative : never replaces explorer or official blog for numbers or mechanism.

Primary : chain explorers

Primary : official WEMIX blog

Secondary : reputed news (optional cross-check)

  • The Crypto Times : recaps official figures; parent Wemade / second-incident context
  • Yahoo Finance : same official numbers; bridge/service suspension quotes
  • Chosun Biz : Korean parent-company framing (Wemade, ~7.7bn KRW)
Addresses are labeled analytically (for example, Suspected CEX sink) unless an explorer shows an official name tag or the WEMIX blog names the entity. Do not treat analytical labels as accusations against any person or business. All address claims are hyperlinked to WEMIX explorer, Etherscan, or BscScan for independent verification.

Alignment: Official blog amounts and timeline match explorer reconstruction. Official phrase “ownership of a WEMIX$-related contract was compromised” aligns with helper proxy Ownable takeover on explorers : not proof that the WEMIX$ token owner() key was stolen. Parent company: Wemade (Korean-listed gaming publisher; WEMIX / WEMIX PLAY ecosystem).

Hypotheses -- What We Investigated and Found

#TheoryVerdictWhy
H1Helper proxies left with callable initialize / reinitializerPROVENVAULT and 0x01fa are EIP-1967 proxies (identical 2,112-byte proxy code; different implementations). See Architecture. Pre-exploit likely-name isWhitelist(VAULT/0x01fa)=1; Router=0. Exploit emitted Initialized + OwnershipTransferred on both proxies: attacker set Ownable in proxy storage via setup through the proxy. Behavior confirmed on explorers.
H2The WEMIX$ owner private key was stolenIMPRECISEThe WEMIX$ token's top-level owner key was never used (nonce 0, zero balance, not on the minter whitelist). But privileged access to helper contracts WAS taken through their unlocked setup function. News headlines saying "owner key breach" describe a real privilege compromise but attribute it to the wrong mechanism. It was a configuration error, not a key theft. Both "the token owner key was safe" and "privileged access was compromised" are true.
H3The attacker bypassed the daily conversion limitTRUE but not the bugWEMIX$ has a user-facing Module with a 3-per-day limit. The attacker never used the Module. They called the token directly through the helper contracts. The Module worked fine -- the attacker just ignored it.
H4Chainlink CCIP bridge was the attack entry pointNOZero CCIP calls in the exploit transaction. CCIP was only used to send money OUT to Ethereum after the exploit. It was the exit door, not the entry.
H5A recent network outage caused the exploitNOWEMIX had a block production halt on July 19, but it was a speed issue fixed the same day. No contract changes happened. WEMIX$ is not a proxy and cannot be upgraded.
H6A flash loan or MEV bot was usedNOThe attacker used their own money ($5 of gas from an exchange). No borrowed funds, no flash loan patterns in the logs.
H7Supply-chain / stolen-key reuse from Feb 2025 NILE leakOPEN / SCOPEDNot July root cause (that is unlocked initialize). No public 2025 attacker addresses to compare. Promote only if key reuse or shared funding graph is proven.
H8Same actor or collusion with Feb 2025UNRESOLVABLE PUBLICLYNeeds disclosed 2025 attacker set or LE/KYC. Gas funder is exchange infrastructure, which weakens but does not refute off-chain collusion.
H9Breaker role was the exploit entryNO (as root)Attack used helper initialize + whitelist mint, not Breaker. Breaker remains an unmapped residual control surface (pause/emergency powers unknown without source).
H10Other residual isWhitelist minters still dangerousCONTAINED (helpers)VAULT and 0x01fa: isWhitelist was 1 pre-exploit, 0 now. Sample of related DEX/CCIP contracts also 0. Full historical mapping scan still ideal but not required for this incident path.
H11Attacker found helpers via on-chain recon (hunting), not insider tipOPEN / PLAUSIBLEFor recon: Transfer watch + likely-name isWhitelist + EIP-1967 slot + initialize probe is trivial on a public chain.
Against polished insider: 3 failed deploys, exchange-funded fresh EOA, Proxy Admin never used.
Verdict: OPEN / PLAUSIBLE. Evidence weights toward independent recon; does not prove discovery method. Not a courtroom claim.
H12Proxy Admin key residual upgrade riskOPEN residual riskShared admin 0x465ea8f2dea0061dc177d4325ece33a0151af3f9 (nonce 1, 0 WEMIX) can upgrade VAULT and 0x01fa implementations. Impl/admin unchanged during exploit. isWhitelist fix is token-side; a malicious upgrade could change helper logic. Recommendation: Foundation confirm custody and rotate to multisig. Not evidence the key is lost or stolen.

The Numbers

5,225,525
WEMIX$ Created (Net)
$724,198
USDC.e Stolen (Realized)
30,736
WEMIX Converted (Net)
24 min
Funding to Exploit
37
Attacker Transactions
$6.25M
Network Impact Estimate
Foundation figure: face value / TVL impact, not realized theft

Headlines citing $5.2M-$6.25M reflect mint face value or network impact. Realized outflow traced on explorers: about $724,198 USDC.e.

The Attacker

Attack Wallet

LabelAttacker / Signer EOA
Address0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH]
First seenBlock 118,822,162 -- July 26, 08:52:59 UTC
Funded byGas Funder (exchange distribution)
0x23df34d2d6556a227ddc12a6c6474cb7c6edb6b3
Funding amount23.746 WEMIX (about $5, just for gas)
Final balance0.0 WEMIX (everything moved out)
Total transactions37 (nonces 0 through 36)
Identified byPublicly flagged on July 26; verify on WEMIX explorer
Real-world identityAttribution open (not a technical gap). Wallet is fully mapped on explorers. Gas came via exchange distribution, so someone had an exchange account, but explorers cannot name the person. Closes only with funding-CEX KYC or law enforcement.

Threat profile (analytical, not identity)

Independent operator; on-chain behavior consistent with a solo actor. Analytical assessment of on-chain behavior; not attribution of a person.

  • Setup: public recon path to unlocked proxy initialize is feasible
  • Execution: Router debugged on mainnet (~3.4 min of failed deploys)
  • Exit: CCIP then Rango; layered EOAs
  • Mistakes: 4,500 WEMIX left dormant; 2nd exploit reverted

Where Did the Gas Money Come From?

StepLabelAddressActivityWhat It Is
0Upstream funder of hot wallet0x3d87aa740dc32481494904ab94679251d5dfe51enonce 0 at funding timeFed the exchange hot wallet; chain starts at exchange infrastructure.
1Exchange Hot Wallet0xf89d7b9c864f589bbf53a82105107622b35eaa40123,344 transactionsExchange hot wallet. Active since early in chain history. Sends to hundreds of addresses.
2Gas Funder / Distribution0x23df34d2d6556a227ddc12a6c6474cb7c6edb6b31,885 transactionsDistribution wallet. Funnels money from the exchange to users.
3Attacker / Signer EOA0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH]37 transactionsThe attacker. Received $5 of gas, then struck 24 minutes later.
Key Point
The gas money came from an exchange, not from freshly created attacker wallets. This means the attacker had an exchange account and used it to fund their attack wallet. This rules out dedicated infrastructure but does not identify the attacker.

Attack Timeline -- Every Step Verified On-Chain

08:52:59 UTC | Block 118,822,162
Step 1: Attacker Wallet Funded
An exchange distribution wallet sends 23.746 WEMIX to a brand new wallet. Just enough for transaction fees.
09:14:07 UTC | Block 118,823,430
Step 2: First Attempt Fails (Nonces 0 and 1)
Attacker deploys a first version of the exploit contract and tries to call it. It self-destructs or fails. The call shows success but does nothing (0 events).
09:15:37 UTC | Block 118,823,520
Step 3: Second Attempt Also Fails (Nonce 2)
Attacker deploys a second version. Also fails. Contract no longer exists.
09:17:05 UTC | Block 118,823,608
Step 4: Third Try Works -- Router Deployed (Nonce 3)
Attacker deploys the final exploit Router (10,590 bytes). This is the brain that will call the setup function on helper contracts and run the mint/swap cycles.
Exploit Router 0xb6bdea4941f6fd4ea3918fac902494da100ac4d2 | 10,590 bytes
09:17:28 UTC | Block 118,823,631
🔥 Step 5: THE EXPLOIT -- 9 Cycles in One Transaction (Nonce 4)
The Router calls attack() on itself. It takes ownership of VAULT and 0x01fa (two helper contracts), then runs 9 cycles of: burn pool tokens, extract USDC, mint fresh tokens to refill. Each cycle doubles the amount. Result: 723,294 USDC.e and 4.5M WEMIX$ extracted.
Exploit tx 0xfed2172a508d84f63b56acc7e3c30164930220004f808799998b8201fe7cefe0 | Gas: 43,175,936 | 679 log events | Status: SUCCESS
09:17:48 UTC | Block 118,823,651
Step 6: Second Exploit Attempt Fails (Nonce 5)
Attacker tries to run the exploit again. It fails immediately (only 0.1% of the gas used the first time). The helper contracts are already set up, so calling the setup function again is blocked by the double-setup protection.
09:19 to 09:43 UTC | Blocks 118,823,754 to 118,825,182
Step 7: Bridging Money to Ethereum (Nonces 8-21)
Attacker sends 723,244 USDC.e to Ethereum Mainnet via 11 CCIP bridge transactions. Each costs about 6.5 WEMIX in fees. The bridge sends the money to the attacker's own address on Ethereum. All 11 sends confirmed as going to Ethereum only (no BNB Chain destination found in any of the 11 sends).
09:59 to 10:09 UTC | Blocks 118,826,166 to 118,826,740
Step 8: Dumping 4.5M WEMIX$ on DEXs (Nonces 22-31)
Attacker dumps the 4.5M WEMIX$ on decentralized exchange pools. 107K to pair #1, 391K to pair #2, and 4M to a custom swap helper that does a two-hop swap. This produces 903.78 USDC.e more.
10:22 to 10:58 UTC | Blocks 118,827,509 to 118,829,666
Step 9: Final Cash-Out to Exchange (Nonces 34-36)
34,752 WEMIX sent to two wallets: 4,500 to Dormant Cash-Out 0x2b723ed7ad47b060bf56ab0928596d7d024d26d5 (still sitting there, never moved) and 30,252 to Forwarder 0x14c5d965804e6d7145e0a636d7409883aeba89f0 (who forwarded everything to Suspected CEX Sink 0xdb3ded7731c781224ec292e2163d9554c094fd7c [WEMIX] [ETH], 407 nonces; legal exchange name unknown). Attacker wallet balance after all this: 0.0 WEMIX.

Complete Money Flow -- Where Every Dollar Went

Gas Funder (exch. dist.)
23.7 WEMIX
Gas money only
Attacker / Signer EOA
Funded
Deploy + Attack
Exploit Router
Runs exploit
10,590 bytes
WEMIX$ Token
+5,225,525 minted
Via VAULT authority
After exploit, attacker holds: 723,294 USDC.e + 4,500,366 WEMIX$
CCIP Bridge
11 sends
To Ethereum Mainnet only
Ethereum (USDC → ETH swap contract)
723,244 USDC → ETH
Then 73.5 ETH → BSC (Etherscan + BscScan)
Ethereum → BNB Smart Chain (traced on Etherscan + BscScan)
Attacker / Signer EOA
73.5 ETH
4 bridge txs (Rango Diamond on Etherscan)
ETH→BSC bridge contract
Bridge
Bridge contract on Ethereum (Etherscan)
BSC Hop Wallet
USDT out
139,550 USDT to 4 EOAs
Also: 4,500,366 WEMIX$ dumped on DEXs
+
Swap Helper
4,001,246 dumped
Two-hop swap
More USDC.e
+903.78
Swap proceeds
Total USDC.e: 723,294 + 903.78 = 724,198.27 (matches Foundation report)
Attacker Wallet
34,752 WEMIX
From exploit + swaps
Dormant Cash-Out
4,500 WEMIX
Still there, never moved
+
Forwarder → Suspected CEX Sink
30,252 WEMIX
CEX name unknown; 2,473 dust left
BSC USDT split
Interpretation: Batches 90k / 20k / 10k may be pre-planned (analytical reading, not confirmed); 19,550 is remainder after gas/swap. Fresh EOAs on exploit day = nesting layers, not named CEX deposits. Recipients: see What to monitor.
Reconciliation -- Every Dollar Accounted For
WhatOur TraceFoundation ReportMatch?
WEMIX$ created (net)5,225,525.00~5,225,525Exact
USDC.e from exploit tx723,294.49----
USDC.e from DEX swaps903.78----
USDC.e total724,198.27$724,198.27Exact Match
WEMIX sent (gross)34,752.32----
Minus CCIP fees-72.78----
Minus gas for 32 txs-3,944----
WEMIX net~30,73630,736 WEMIXExact Match

How The Exploit Worked (Plain English)

The Bug: Unlocked Setup Function

WEMIX$ does not let anyone mint new tokens. It has a whitelist of trusted helper contracts. VAULT and 0x01fa are EIP-1967 proxies with an unlocked setup path (see Architecture). Think of it as a vault door whose combination reset was still enabled: the attacker reset Ownable in proxy storage and used the already-authorized door.

The Proof: Whitelist Check

WEMIX$ has a function that checks if an address is an approved minter. We tested it by calling it directly with different addresses. The function selector is 0xc683630d, which public signature databases map to likely name isWhitelist(address). Behavior confirmed on explorers.

LabelAddressPre-exploit whitelist?Latest (2026-07-29)?
VAULT (helper proxy)0xd2947dbfdbdbb99702de6e46c63cb1968e21d95bYES (1)NO (0) : revoked
Secondary Helper 0x01fa0x01fa6cc8cd2f99b30e19d599fc002c3f2cac3d76YES (1)NO (0) : revoked
Exploit Router0xb6bdea4941f6fd4ea3918fac902494da100ac4d2NONO
Attacker / Signer EOA0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH]NONO
WEMIX$ Owner (Foundation cold)0x7a907b9df3f4843522b905758c2f542c9c028e4dNONO

Key finding: The attacker's Router is NOT on the whitelist. It works through VAULT and 0x01fa. Both were approved by the Foundation at deployment. The attacker did not add them. The attacker took Ownable on the already-approved proxies by calling unlocked setup through them (Ownable state lives in proxy storage).

The Attack Path

  1. Router calls initialize / reinitializer on VAULT proxy -- Ownable in proxy storage becomes Router (DELEGATECALL into VAULT impl)
  2. Same on 0x01fa proxy -- Ownable becomes Router (different implementation behind the proxy)
  3. Router (as proxy Ownable) drives mint via VAULT -- VAULT address is on isWhitelist, so WEMIX$ allows the mint
  4. Router calls burn -- burns pool WEMIX$ to drain out USDC.e
  5. Repeat 9 times, doubling each cycle: 20K, 40K, 82K, 164K, 328K, 656K, 1.3M, 2.6M, 5.2M

Important Distinction

Privileged access WAS compromised. The attacker took ownership of two Foundation-deployed helper contracts. This is a real privilege compromise. News headlines calling it an "owner key breach" are imprecise -- they describe a real problem (someone took privileged access) but attribute it to the wrong mechanism (key theft instead of configuration error). The WEMIX$ token's own owner key was never used. Helper proxy Ownable was taken through unlocked setup via the proxies. Both statements are true.

The 9 Mint/Burn Cycles -- How 5.2M Was Created

The attacker did not just mint 5.2M tokens in one shot. They ran a loop: burn existing pool WEMIX$ (pulling out USDC.e), then mint fresh WEMIX$ to refill the pool. Each cycle, the amount doubled.

CycleBurnedMintedNet added
120,49220,492~0
220,49240,984+20,492
340,98481,969+40,985
481,969163,938+81,969
5163,938327,876+163,938
6327,876655,752+327,876
7655,7521,311,504+655,752
81,311,5042,623,008+1,311,504
92,623,0085,246,017+2,623,009
TOTAL5,246,01710,471,542+5,225,525
Verification
WEMIX$ total supply before exploit: 14,539,841. After exploit: 19,765,366. Change: +5,225,525. This matches the net mint-burn exactly. The "10.47M minted" number in the news is the gross amount, but it ignores the 5.25M that was burned in the same transaction.

Full Attacker Transaction Trace (All 37 Transactions)

Every single transaction the attacker made, in order. Nothing omitted.

Funding (1 transaction)
BlockTime (UTC)FromAmount
118,822,16208:52:59Gas Funder
0x23df34d2d6556a227ddc12a6c6474cb7c6edb6b3
23.746 WEMIX
Pre-Exploit: Deploy and Debug (Nonces 0-3)
NonceBlockTimeAction
0118,823,43009:14:07Deploy version 1 -- self-destructed
1118,823,43009:14:07Call version 1 -- no-op (empty contract)
2118,823,52009:15:37Deploy version 2 -- also failed
3118,823,60809:17:05Deploy final Router (10,590 bytes)
🔥 THE EXPLOIT (Nonce 4)
NonceBlockTimeAction
4118,823,63109:17:28Call attack() -- 9 mint/burn cycles -- extract 723,294 USDC.e + 4.5M WEMIX$
Exploit Transaction Details
Gas: 43,175,936 | Logs: 679 | Status: SUCCESS
Mints: 9 events (10,471,542 WEMIX$ total) | Burns: 9 events (5,246,017 total) | Net new supply: +5,225,525
USDC.e to attacker: 723,294.49 | WEMIX$ to attacker: 4,500,366.27
Post-Exploit: Cash Out (Nonces 5-36, 32 transactions)
NonceBlockTimeToValueAction
5118,823,65109:17:48Router0REVERTED 2nd exploit failed
6-7118,823,72109:18-19USDC.e0Approve USDC.e for bridge
8118,823,75409:19:31CCIP6.72Bridge send #1 to Ethereum
9-10118,823,91909:22USDC.e + V30Approve + Uniswap V3 swap
11-21118,824,05509:24-09:43CCIP ×10~6.5 eachBridge sends #2-#11 to Ethereum (total fees: 72.78 WEMIX)
22118,826,16609:59:43WEMIX$0Transfer 107,811 WEMIX$ to DEX pair #1
23-27118,826,17109:59-10:00DEX pairs0DEX swaps + unwrap WWEMIX
28-29118,826,66410:08CREATE ×20Deploy two swap helper contracts (4,519 bytes each)
30118,826,71510:08:52WEMIX$0Transfer 4,001,246 WEMIX$ to swap helper #2
31118,826,74010:09:17Helper #20Run two-hop swap (WEMIX$ to WEMIX to USDC.e)
32-33118,827,04710:14USDC.e + V30Approve + final Uniswap V3 swap
34118,827,50910:22:06Dormant Cash-Out
0x2b723ed7ad47b060bf56ab0928596d7d024d26d5
4,500Still dormant (nonce 0)
35-36118,829,26510:51-10:58Forwarder
0x14c5d965804e6d7145e0a636d7409883aeba89f0
30,252Forwarded to Suspected CEX Sink

All Addresses and Who They Are

Grouped for readability. Full 40-hex addresses with explorer links. Analytical labels (for example, Suspected CEX sink) are not legal entity names unless an explorer tag or official WEMIX blog confirms them.

Core contracts 11
LabelFull AddressChainTypeKey Fact
WEMIX$ Token0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1WEMIXContract (11,666 bytes)Stablecoin. Minter whitelist. No external CALLs. Not upgradeable.
WEMIX$ Owner (Foundation cold key)0x7a907b9df3f4843522b905758c2f542c9c028e4dWEMIXEOANonce 0, zero balance. Never used in exploit.
VAULT (helper proxy)0xd2947dbfdbdbb99702de6e46c63cb1968e21d95bWEMIXEIP-1967 proxy (2,112 bytes)Proxy template. Ownable=Router. isWhitelist 1→0. Impl unchanged in exploit.
Secondary Helper proxy (0x01fa)0x01fa6cc8cd2f99b30e19d599fc002c3f2cac3d76WEMIXEIP-1967 proxy (2,112 bytes)Same proxy bytecode as VAULT; different implementation. Ownable=Router. isWhitelist 1→0.
VAULT implementation0xbddd41457b55710fd0055b1cfbbc0b9be77a89c4WEMIXImplementation (16,443 bytes)EIP-1967 impl slot for VAULT. Direct owner()=0 (state in proxy).
Secondary Helper implementation0x002ceee5624f60fee129549ffa6805a5ee49c759WEMIXImplementation (7,783 bytes)EIP-1967 impl slot for 0x01fa. Not identical to VAULT impl.
Shared Proxy Admin0x465ea8f2dea0061dc177d4325ece33a0151af3f9WEMIXEOA (nonce 1)EIP-1967 admin for both proxies. 0 balance. Residual upgrade surface (H12). Unlabeled.
VAULT Pre-Init Owner0xa57440b7059b250434c3f7ce07d74b60410a2e0aWEMIXEOAOwner before exploit initialize; never called initialize().
Secondary Helper Pre-Init Owner0x0fc69c692c5e9d1eea16b53e708cb8e583e3eb63WEMIXEOAOwner before exploit initialize; never called initialize().
CCIP Bridge (WEMIX3.0)0x7798b795fde864f4cd1b124a38ba9619b7f8a442WEMIXContract (11,130 bytes)11 sends to Ethereum only (selector 5009297550715157269).
USDC.e Token (WEMIX3.0)0x44bb111010dfffb3695f9a1b66aa879976199e7bWEMIXTokenStolen value on WEMIX3.0.
Attacker path 8
LabelFull AddressChainTypeKey Fact
Attacker / Signer EOA0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH]WEMIX ETHEOA37 txs WEMIX3.0; residual ETH on Ethereum. Wallet known; real-world person is attribution-open.
Gas Funder (exchange distribution)0x23df34d2d6556a227ddc12a6c6474cb7c6edb6b3WEMIXEOA1,885 txs. Funded attacker with 23.746 WEMIX.
Exchange Hot Wallet (upstream)0xf89d7b9c864f589bbf53a82105107622b35eaa40WEMIXEOA123,344 txs. Exchange infrastructure.
Upstream of Hot Wallet0x3d87aa740dc32481494904ab94679251d5dfe51eWEMIXEOAFunded hot wallet; nonce 0 at that point.
Exploit Router0xb6bdea4941f6fd4ea3918fac902494da100ac4d2WEMIXContract (10,590 bytes)attack(). owner()=Signer. Still Ownable of VAULT + 0x01fa proxies.
Dormant Cash-Out0x2b723ed7ad47b060bf56ab0928596d7d024d26d5WEMIXEOA4,500 WEMIX. Nonce 0. Potentially recoverable if frozen.
Forwarder Wallet0x14c5d965804e6d7145e0a636d7409883aeba89f0WEMIXEOAForwarded 30,252 WEMIX to sink. Nonce 2.
Suspected CEX Sink (unnamed)0xdb3ded7731c781224ec292e2163d9554c094fd7c [WEMIX] [ETH]WEMIX ETHEOA407 nonces; ~2,473 WEMIX dust. Multi-hop ETH convergence. Legal CEX name: attribution-open (Foundation/exchange/LE).
DEX / infra (WEMIX3.0) 9
LabelFull AddressChainTypeKey Fact
Swap Helper #1 (unused)0xc5eff51d9f4e58d841bec56ce998e06cd6f18854WEMIXContract (4,519 bytes)Deployed, never used. Possible backup.
Swap Helper #20x7a9279fd5204651e2447734c0a2d8fb54373535eWEMIXContract (4,519 bytes)Two-hop swap; dumped ~4M WEMIX$.
DEX Router (WEMIX3.0)0x5937c7096b054564c6f17b7e61d9abf1256b0593WEMIXContract (17,047 bytes)Received 723,244 USDC.e during exploit. Shared infra.
DEX Pool (WEMIX3.0)0x34d30e02dc98122ac25f602b68c76733f3a62db6WEMIXContract (31,705 bytes)Received 953 USDC.e; held ~209.75 residual at prior audit.
USD Coin (bridged variant)0xe3f5a90f9cb311505cd691a46596599aa1a0ad7dWEMIXContract (7,544 bytes)Swap target only. Not a WEMIX$ minter.
DEX Pair (in Router code)0x1d3fcfb4c3e687140c836415154d311c2679d5d5WEMIXPair / addrAppears in 40+ USDC.e transfers during exploit.
DEX Pair #10x42cf1af7fa9c2b50855a47806706d623de73316bWEMIXUniV2 pairReceived 107,811 WEMIX$ dump.
DEX Pair #20x00caec2e118abc4c510440a8d1ac8565fec0180cWEMIXUniV2 pairReceived 391,307 WEMIX$ dump.
AMM Wrapper0xe4978230413e0b4779fc18977776e87e37655bbbWEMIXContract (708 bytes)73 swap-accounting events in exploit tx.
Ethereum exit 9
LabelFull AddressChainTypeKey Fact
ETH USDC Release Cluster0xc373cb40513af4a9a128e6350f2b127f5d413e88ETHEOA/clusterSent ~723,244 USDC to attacker on Ethereum post-CCIP.
ETH USDC→ETH swap contract0x225a38bc71102999dd13478bfabd7c4d53f2dc17ETHContractUSDC→ETH route on Ethereum (Etherscan).
ETH→BSC bridge contract (ETH)0x69460570c93f9de5e2edbc3052bf10125f0ca22dETHBridge contractBridge contract on Ethereum (Etherscan): RangoDiamond. 73.5 ETH to BSC.
ETH Intermediate #10x7353e299484668ac3b8c193139b8a136ff135eaaETHEOAReceived 15 ETH from signer; forwarded toward sink/others.
ETH Intermediate #20x3a13920f7501aa6c58476b6d278d06f312d5d431ETHEOA5 ETH path toward Arbitrum Inbox.
ETH Intermediate #30x8f3e7a7830b8886d5ae071d012ad4c007a74bbfdETHEOAForwarded to Suspected CEX Sink.
Arbitrum Inbox0x4dbd4fc535ac27206064b68ffcf827b0a60bab3fETHBridgeArbitrum Inbox contract (Etherscan label).
Post-Sink ETH Holder (2026-07-29)0xb7f23910577b033746a29e406106ffdb50951265ETHEOAReceived ~21.71 ETH from Suspected CEX Sink; still holding. Unlabeled.
Post-Sink ETH Dust (2026-07-29)0xf0bf1b911f8e33058f3dda6284eff4842b08289dETHEOAReceived ~1.05 ETH from Suspected CEX Sink. Unlabeled.
BNB Smart Chain exit 6
LabelFull AddressChainTypeKey Fact
BSC Hop Wallet0x2cf3ebd5997fa816ac57e796fea52325a374180bBSCEOAReceived Rango bridge; sent 139,550 USDT to 4 EOAs.
BSC-USD (USDT token)0x55d398326f99059ff775485246999027b3197955BSCTokenBscScan-labeled Binance-Peg BSC-USD token used for hop-wallet cash-outs. Token name is an explorer label, not a claim that Binance received funds.
BSC USDT Recipient A (90k)0x7b0a97f369b11755f0ef84cf1a61c03d8f693ebaBSCEOAUnlabeled. First-seen 2026-07-26. 90,000 USDT total.
BSC USDT Recipient B (20k)0x8824e047921c699aa76b032a334107b057e2aeaaBSCEOAUnlabeled. 20,000 USDT.
BSC USDT Recipient C (19.55k)0xf72c18c6b10659ff24b33d16b458b9802f5d9aceBSCEOAUnlabeled. 19,550 USDT.
BSC USDT Recipient D (10k)0x3b1bf3403d537c92a3fbf9379891d7b9f766c071BSCEOAUnlabeled. 10,000 USDT.
Key transactions 2
LabelFull AddressChainTypeKey Fact
Funding Transaction0x5afa080282756fa24ce725ff0da2913e5d1eb5badcf83596f91257aad4f768e8WEMIXTx hashGas funder to attacker, 23.746 WEMIX. Open on WEMIX explorer
Exploit Transaction0xfed2172a508d84f63b56acc7e3c30164930220004f808799998b8201fe7cefe0WEMIXTx hash679 logs; 9 mint/burn cycles. Open on WEMIX explorer

Gap Resolution

Technical (1 to 12, 14 to 15, 17): closed on explorers and/or official blog. Attribution (13, 16): open until Foundation, exchange, or LE names a venue or person. Residual ops risk (18 / H12): Proxy Admin upgrade surface; not the July 26 mint path.

#QuestionStatusAnswer
1What is function 0xc683630d?SOLVEDPublic signature databases say isWhitelist(address). Pre-exploit: VAULT + Secondary Helper = 1. Latest (2026-07-29): both = 0 (revoked). Name should be independently verified.
2What is CCIP function 0x96f4e9f9?SOLVEDPublic databases say ccipSend(...). The CCIP message receiver is the attacker's own address on Ethereum.
3What is exploit function 0x9e5faafc?SOLVEDPublic databases say attack().
4What is swap helper function 0x7357f5d2?SOLVEDPublic databases say run(uint256,uint256).
5Who is DEX Router 0x5937c7096b054564c6f17b7e61d9abf1256b0593?SOLVEDDEX Router (17,047 bytes). Got 723K USDC.e. Shared infra, not attacker-controlled.
6Who is DEX Pool 0x34d30e02dc98122ac25f602b68c76733f3a62db6?SOLVEDDEX pool (31,705 bytes). Got 953 USDC.e; ~209.75 residual at audit.
7What is USD Coin variant 0xe3f5a90f9cb311505cd691a46596599aa1a0ad7d?SOLVEDBridged "USD Coin". Not a WEMIX$ minter. Swap target only.
8Who is DEX Pair 0x1d3fcfb4c3e687140c836415154d311c2679d5d5?SOLVEDDEX pair address in Router; 40+ USDC.e transfers during exploit.
9Why did the 2nd exploit (nonce 5) fail?SOLVEDDouble-setup protection. The helper contracts block calling the setup function twice. Failed at the first check.
10Did the attacker use PLAY Bridge?SOLVEDNo. None of the 37 transactions touch the PLAY Bridge.
11Is Dormant Cash-Out 0x2b723ed7ad47b060bf56ab0928596d7d024d26d5 still holding funds?SOLVEDYes. 4,500 WEMIX, nonce 0 (live 2026-07-29). Potentially recoverable if frozen.
12Did money go to BNB Chain?SOLVEDYes: second hop from Ethereum. Signer → ETH→BSC bridge contract 0x69460570c93f9de5e2edbc3052bf10125f0ca22d (73.5 ETH) → BSC hop 0x2cf3ebd5997fa816ac57e796fea52325a374180b → 139,550 USDT to four unlabeled EOAs. WEMIX3.0 CCIP was Ethereum-only; BNB is off WEMIX3.0. Verify on Etherscan + BscScan.
13Which exchange got the money?ATTRIBUTION OPENOn-chain pattern closed; legal name open. Suspected CEX sink 0xdb3ded7731c781224ec292e2163d9554c094fd7c [WEMIX] [ETH] (407 nonces; no public explorer name tag). Official blog: freezes requested, some venues froze addresses, names not published. To resolve: Foundation freeze list, exchange compliance reply, or LE disclosure. Do not invent a CEX name from nonce pattern alone.
14What is function 0xae0ce498?BEHAVIOR-CLOSEDStill returns 2. Not found in public function-signature databases (re-checked 2026-07-29). Constant config/role enum. Exact Solidity name needs source; low priority for the case.
15Can helpers still mint? (containment)SOLVED (token-side)No via current helpers. isWhitelist(VAULT)=0 and isWhitelist(0x01fa)=0. Proxy Ownable still Router. totalSupply stable. See gap 18 for Proxy Admin upgrade residual.
16Who is the attacker in real life?ATTRIBUTION OPENWallet identified; person unknown. Attacker EOA 0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH] fully mapped (37 nonces). Funding path is exchange infrastructure, not bare attacker infra. To resolve: KYC at the gas-funding exchange, or LE on freeze/deposit accounts. Explorers cannot close this.
17Are VAULT / 0x01fa full implementations?SOLVEDNo. EIP-1967 transparent proxies (2,112-byte identical proxy code). Distinct impls: 0xbddd41457b55710fd0055b1cfbbc0b9be77a89c4 and 0x002ceee5624f60fee129549ffa6805a5ee49c759. Prior "full implementation" claim retracted.
18Proxy Admin residual upgrade risk? (H12)OPEN residualAdmin 0x465ea8f2dea0061dc177d4325ece33a0151af3f9 (nonce 1, 0 bal) can upgrade both proxies. Foundation should confirm custody / rotate to multisig. Not proof of compromise. Not the July 26 mint path.
How attribution closes (checklist)
  1. CEX name: Ask WEMIX Foundation which exchanges confirmed freezes for sink 0xdb3ded7731c781224ec292e2163d9554c094fd7c, BSC USDT recipients, and related ETH addresses. Or wait for public explorer tags that name a venue.
  2. Person: Formal request to the exchange that funded gas (upstream of 0x23df34d2d6556a227ddc12a6c6474cb7c6edb6b3) and/or exchanges that received deposits. Requires KYC cooperation or law enforcement.
  3. Do not: Mark a legal CEX name or person from hop counts, dust balances, or news paraphrases alone.

Last Known Points of All Stolen Funds

AssetAmountLast Known LocationStatus
USDC → ETH~723,244 USDCETH: swap contract 0x225a38bc71102999dd13478bfabd7c4d53f2dc17 → ETH legs (Etherscan)Then Rango → BSC (73.5 ETH) + other ETH dispersals (Arbitrum path, sink hops).
USDT (BSC)139,5504 EOAs from BSC hop 0x2cf3ebd5997fa816ac57e796fea52325a374180bLargest: 90k to 0x7b0a97f369b11755f0ef84cf1a61c03d8f693eba (unlabeled). Four EOAs look fresh on exploit day; 19,550 is the non-round remainder after 90k/20k/10k batches. Nested layers, not named exchange deposits.
USDC.e953.78DEX Pool 0x34d30e02dc98122ac25f602b68c76733f3a62db6UniV3 residual path; ~209.75 noted at prior audit.
WEMIX4,500Dormant Cash-Out
0x2b723ed7ad47b060bf56ab0928596d7d024d26d5
Still 4,500 (live). Recoverable if frozen.
WEMIX30,252Suspected CEX Sink
0xdb3ded7731c781224ec292e2163d9554c094fd7c [WEMIX] [ETH]
~2,473 WEMIX dust still there. CEX name unknown. ETH outflows 2026-07-29.
WEMIX~3,944Spent as gasGone. Not recoverable.
WEMIX72.78Spent as CCIP bridge feesGone. Not recoverable.
Bottom Line
Potentially recoverable on WEMIX3.0: 4,500 WEMIX (dormant wallet) + 2,472 WEMIX (exchange deposit dust) = ~6,972 WEMIX. Recovery depends on an exchange or the Foundation actually freezing these addresses.
Moved off-chain (Ethereum/BNB): ~724,198 USDC.e total. Foundation says some frozen (general statement).
Spent on gas/fees: ~4,017 WEMIX. Gone.

Exploit Transaction: 679 Log Events

The exploit transaction produced 679 log events from 8 contracts. Here is every type:

EventCountFromWhat It Means
Transfer450WEMIX$ (367), USDC.e (147)Token movements. 9 from-zero (mints), 9 to-zero (burns), 258 other.
Approval73WEMIX$Approving DEX pools to spend tokens.
AMM wrapper event73AMM Wrapper 0xe4978230413e0b4779fc18977776e87e37655bbb (708 bytes)Swap accounting. Records input, output, and fee.
Sync192 DEX pairsReserve updates after each swap.
Swap192 DEX pairsActual swap events.
Mint authorization9WEMIX$Records who minted, how much, and which cycle (1-9).
Burn authorization9WEMIX$Records who burned, how much, and which cycle.
VAULT action9VAULTVAULT swap event with pool state data.
0x01fa action90x01faSecondary helper action event.
OwnershipTransferred2VAULT, 0x01faOwnership moved from old owners to the attacker's Router.
Initialized2VAULT, 0x01faConfirms the setup function was called on both helpers.
Other setup5VAULT, 0x01faAdditional setup events.
All Events Accounted For
Total: 450 + 73 + 73 + 19 + 19 + 9 + 9 + 9 + 9 + 2 + 2 + 5 = 679. Matches receipt exactly.
Minted: 10,471,542 WEMIX$. Burned: 5,246,017 WEMIX$. Net new: +5,225,525 WEMIX$.

Open residual risk (H12)

Proxy Admin residual. Token-side mint is revoked (isWhitelist=0 for VAULT and 0x01fa). Ownable on both proxies is still Exploit Router 0xb6bdea4941f6fd4ea3918fac902494da100ac4d2. Double-initialize blocked; totalSupply frozen at 19,765,366.

Shared Proxy Admin 0x465ea8f2dea0061dc177d4325ece33a0151af3f9 (nonce 1, 0 balance) can still upgrade either proxy implementation. That is residual operational risk, not evidence the key is lost or stolen. Recommendation: Foundation confirm custody and rotate to multisig. Details: gap 18, Architecture, Watch.

What to Monitor

Movement on these addresses is an investigative lead. Sink ETH outflows on 2026-07-29 show the sink cluster was still active post-exploit (not a frozen/lost wallet narrative). Status tags below are as of that observation window.

News Claims vs. What Actually Happened

What News SaidOur VerdictEvidence
"Owner key breach" (multiple outlets)IMPRECISEPrivileged access WAS compromised (helper proxy Ownable taken via initialize). Configuration error, not WEMIX$ owner-key theft. Headlines describe the right problem with the wrong mechanism.
"5.23M WEMIX$ minted" (Foundation)CORRECT (net)Gross mint was 10.47M but 5.25M was burned in the same transaction. Net new supply: +5,225,525. Matches totalSupply() change exactly.
"10.47M minted" (third-party gross-mint headline)MISLEADINGCorrect gross number but ignores 5.25M burned in the same transaction. Net new supply is +5,225,525 (explorer totalSupply delta).
"$724,198.27 stolen" (Foundation)EXACT MATCH723,294.49 (exploit) + 903.78 (DEX swaps) = 724,198.27. Reconciled to the dollar.
"30,736 WEMIX converted" (Foundation)CORRECT (net)Our trace: 34,752 WEMIX gross. Minus 72.78 CCIP fees and ~3,944 gas = ~30,736 net.
"Funds to Ethereum and BNB Chain"CONFIRMEDCCIP → Ethereum on-chain. ETH → BNB via ETH→BSC bridge contract (73.5 ETH) → BSC hop + 139,550 USDT outs. Traced on Etherscan + BscScan.
"Some funds to centralized exchanges"PATTERN CONFIRMEDForwarder → Suspected CEX Sink 0xdb3ded7731c781224ec292e2163d9554c094fd7c [WEMIX] [ETH] (407 nonces). Legal exchange name not identified.
"CCIP was the breach vector"NOZero CCIP calls in the exploit transaction. CCIP was the exit door, not the entry.
"Some exchanges froze addresses"GENERAL STATEMENTOfficial WEMIX update: freezes requested from exchanges and stablecoin issuers; some addresses reportedly frozen. Exchange legal names and amounts are not published on the official blog. Verify only via Foundation disclosures or explorer tags.
Separate July ~$724K "linked contract" incidentSAME EVENTOutlets restating helper Ownable / linked-contract compromise as a second July loss are describing this same July 26 exploit. Official blog: ~5,225,525 WEMIX$ issued; 724,198.27 USDC.e + 30,736 WEMIX. Not a separate loss to add.

February 2025 vs July 2026 Exploits

February 2025July 2026
TargetPlay Bridge VaultWEMIX$ Stablecoin
HowStolen auth key from developer repoUnlocked contract setup function
Time to execute~2 months inside the system24 minutes from funding to exploit
Amount8.65M WEMIX (~$6.1M)$724,198 USDC.e + 30,736 WEMIX
Pattern15 withdrawal attempts, 13 worked9 mint/burn cycles, one transaction
Disclosure delay~4 days~16 hours
Root causeKey theft (operational)Setup error (contract design)
Attacker known?Not disclosedWallet identified, person unknown
Attacker overlap testable?2025 addresses not disclosed2026 wallet mapped; comparison blocked until 2025 set is public

How to Verify These Claims Yourself

Every claim in this report can be checked by anyone with access to the WEMIX3.0 network. Here are the key checks:

ClaimHow to CheckExpected Result
WEMIX$ owner never sent a transactionCheck the transaction count (nonce) of 0x7a907b9df3f4843522b905758c2f542c9c028e4dNonce = 0
WEMIX$ owner has zero balanceCheck the WEMIX balance of WEMIX$ Owner 0x7a907b9df3f4843522b905758c2f542c9c028e4d0.0
VAULT whitelist pre vs latestCall 0xc683630d on WEMIX$ 0x8e81fcc2d4a3baa0ee9044e0d7e36f59c9bba9c1 with VAULT 0xd2947dbfdbdbb99702de6e46c63cb1968e21d95b at block 118823630 vs latestpre=1, latest=0 (revoked)
Secondary Helper whitelist pre vs latestSame with 0x01fa6cc8cd2f99b30e19d599fc002c3f2cac3d76pre=1, latest=0 (revoked)
Exploit Router is NOT an approved minterisWhitelist(Router) on WEMIX$Returns 0
WEMIX$ Owner is NOT an approved minterisWhitelist(Owner)Returns 0
VAULT / 0x01fa proxy Ownable still Routerowner() 0x8da5cb5b on both proxiesBoth return Exploit Router 0xb6bdea4941f6fd4ea3918fac902494da100ac4d2
Pre-init owners (forensics)owner() at block 118823630VAULT → 0xa57440b7059b250434c3f7ce07d74b60410a2e0a; Secondary Helper → 0x0fc69c692c5e9d1eea16b53e708cb8e583e3eb63
Total supply changed by exactly 5,225,525Call totalSupply() (selector 0x18160ddd) on WEMIX$ at block 118823630 and block 11882363114,539,841 before, 19,765,366 after, delta = +5,225,525
Exploit transaction has 679 log eventsGet the receipt for transaction 0xfed2172a508d84f63b56acc7e3c30164930220004f808799998b8201fe7cefe0679 logs, status = success
All 11 CCIP sends went to Ethereum onlyNonces 8, 11-21 to CCIP Bridge 0x7798b795fde864f4cd1b124a38ba9619b7f8a442Chain selector 5009297550715157269 (Ethereum)
ETH→BNB via RangoEthereum: signer → ETH→BSC bridge contract 0x69460570c93f9de5e2edbc3052bf10125f0ca22d (73.5 ETH)BSC hop 0x2cf3ebd5997fa816ac57e796fea52325a374180b
Attacker wallet is emptyCheck the balance and nonce of 0xc921a66e30745f11f8c7a7870e95640607ae7ea2 [WEMIX] [ETH]Balance = 0, nonce = 37
VAULT is EIP-1967 proxyeth_getStorageAt impl slot 0x360894a1... on VAULTImpl = 0xbddd41457b55710fd0055b1cfbbc0b9be77a89c4
0x01fa is EIP-1967 proxy (different impl)Same slot on 0x01faImpl = 0x002ceee5624f60fee129549ffa6805a5ee49c759
Shared Proxy Admineth_getStorageAt admin slot 0xb5312768... on both0x465ea8f2dea0061dc177d4325ece33a0151af3f9; nonce 1
Dormant wallet still holds 4,500 WEMIXCheck the balance of 0x2b723ed7ad47b060bf56ab0928596d7d024d26d54,500 WEMIX, nonce = 0
Note on Function Names
Function names like isWhitelist(address), attack(), ccipSend(), and run(uint256,uint256) come from public signature databases. These databases match function selectors (4-byte hashes) to known function signatures. Collisions are possible. The behavior of each function was confirmed by direct testing, but the exact names should be independently verified.

WEMIX$ Stablecoin Exploit -- Case File v3.11

Technical path closed on explorers + official blog. H12 residual open (Proxy Admin). Attribution still open: CEX legal name, attacker real-world identity.

Dashboard version may advance ahead of backing reports.

Independent case reconstruction; not an official WEMIX Foundation post-mortem. On-chain facts are drawn from public explorers and official WEMIX communications; analytical labels are not accusations against any person or business. If you find an error or inconsistency, report it to the creator via withkeshav.com.

Primary sources: chain explorers + official WEMIX blog. Secondary news for context only. Re-verify on WEMIX explorer / Etherscan / BscScan and official update.