On October 10th, 2025, global crypto markets experienced severe turmoil following the Trump administration’s announcement of 100% tariffs on Chinese goods. Bitcoin plummeted from $122,509.66 to $104,582.41 (14.63% drop), while Ethereum crashed from $4,395.57 to $3,460.22 (21.28% decline).
This macro-driven selloff was amplified by structural vulnerabilities in Binance’s Unified Account margin system, where assets like USDe, wBETH, and BNSOL were valued using internal order-book data rather than external oracles. This flaw, exposed in an 8-day window before a planned fix, contributed to over $19 billion in global liquidations - the largest liquidation event in crypto history.
Moonwell experienced over $12 million in liquidations across all four chains during this period. However, on Base specifically, the protocol suffered an exploit that resulted in approximately $1.7 million in bad debt.
The Exploit (Base)
Amidst the market chaos, an attacker identified and exploited severe price divergences between Moonwell’s oracle feeds and on-chain DEX prices. During this period, oracles were quoting significantly lower prices than DEXs, potentially due to heavy reliance on Binance data. The extreme volatility in oracle pricing created ideal conditions for exploitation - for example, the oracle price for VIRTUAL crashed 80% in 5 minutes before rebounding 66% in the following 15 minutes.
Attack Methodology
The attacker executed a series of atomic transactions following this sequence:
- Flash loaned large amounts of cbBTC or USDC
- Deposited the flash-loaned assets into Moonwell as collateral
- Borrowed VIRTUAL, MORPHO, or AERO tokens at maximum capacity, leveraging the high collateral factors of USDC (88%) and cbBTC (85%)
- Swapped the borrowed tokens on DEX pools where they traded at significantly higher prices than oracle valuations
- The DEX swap returned more cbBTC/USDC than originally flash loaned, allowing the attacker to repay the flash loan and transfer profits (as WETH) to their EOA
This entire sequence occurred within single transactions, as required by flash loans needing to be repaid in the same transaction. The attacker essentially created collateralized positions from thin air, using flash loans to spawn value from the oracle-DEX price differential. This strategy allowed value extraction in two ways: the immediate arbitrage profit from swapping borrowed tokens at higher DEX prices, and later withdrawals of collateral from positions that were created entirely with flash-loaned funds. Whenever debt values declined enough to make positions appear healthy according to oracle prices, the attacker withdrew additional collateral that had never originally belonged to them.
When token prices rebounded rapidly after the initial crash, the borrowed positions instantly became underwater. The attacker had borrowed massive amounts when oracles quoted these tokens at their lows, but the swift recovery meant the protocol was left holding debt worth far more than the collateral backing it.
Liquidation Failure
Liquidators failed to clear the accumulating bad debt despite Moonwell’s 7% liquidation bonus. The standard liquidation process - flash loaning the debt token, repaying the underwater position, seizing collateral at a bonus, swapping it back to the debt token, and repaying the flash loan - became economically irrational.
The oracle-DEX price divergence that enabled the exploit also broke the liquidation mechanism. When liquidators attempted to swap seized collateral back to debt tokens, DEX pools demanded far more collateral than what was seized. The 7% bonus was completely insufficient when oracle-DEX spreads exceeded 20-30%.
With multiple collateral types (cbBTC, USDC) and multiple debt types (VIRTUAL, MORPHO, AERO), liquidators rationally chose the most profitable combinations. AERO debt saw heavy liquidation activity due to less oracle-DEX price divergence, while VIRTUAL experienced virtually no liquidations as its extreme price divergence made liquidation attempts guaranteed losses. MORPHO fell somewhere between these extremes.
Details
A full breakdown of price discrepancies between oracles and DEX pools, and a timeline of events can be viewed at this interactive website: Moonwell Exploit - Oct 10, 2025
Exploit contract: 0xa98e339f5a0f135792286d481b4e23d91a667d3f
Attacker (EOA): 0x6997a8c804642AE2de16D7B8Ff09565a5D5658ff
DEX Pools Interacted with:
- VIRTUAL:
0xE31c372a7Af875b3B5E0F3713B17ef51556da667 - AERO:
0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d - MORPHO:
0xB5F0b4aE66C14F7EFaA9aA1468E8FC536A3E288c
Oracle Addresses:
- VIRTUAL:
0xEaf310161c9eF7c813A14f8FEF6Fb271434019F7 - AERO:
0x4EC5970fC728C5f65ba413992CD5fF6FD70fcfF0 - MORPHO:
0xe95e258bb6615d47515Fc849f8542dA651f12bF6
Collateral Deposited (Flash Loaned)
| Asset | Amount (tokens) |
|---|---|
| cbBTC | 24.54 |
| USDC | 2,013,983.77 |
Tokens Borrowed & Sold
| Asset | Amount (tokens) |
|---|---|
| VIRTUAL | 1,790,698.86 |
| AERO | 4,980,092.07 |
| MORPHO | 391,919.57 |
Collateral Withdrawn
| Type | Amount (tokens) |
|---|---|
| USDC | 498,340.28 |
| cbBTC | 1.97 |
Liquidation Activity
A complete list of liquidations involving the user can be viewed here.
Debt Repaid
| Asset | Amount (tokens) |
|---|---|
| AERO | 4,726,949.43 |
| MORPHO | 273,081.05 |
| VIRTUAL | 29,832.57 |
While 4.7M AERO tokens were liquidated (95% of borrowed amount), only 29,832 VIRTUAL tokens were cleared (1.7% of borrowed amount).
Collateral Seized
| Asset | Amount (tokens) |
|---|---|
| USDC | 1,515,641.57 |
| cbBTC | 22.42 |
From 10/10/2025, 9:19 PM UTC to 10/10/2025, 9:26 PM UTC, the attacker executed their strategy during peak price divergence. In just 7 minutes, they performed both the arbitrage trades and collateral withdrawals. During this window, price differences between the oracles and DEX pools reached their maximum:
- VIRTUAL: 36.64% max divergence
- MORPHO: 27.99% max divergence
- AERO: 20.9% max divergence
Following the attack, from 9:26 to 9:46 PM UTC, liquidators attempted to clear the positions. In these 20 minutes, the remainder of the attacker’s collateral was liquidated, though mostly the AERO debt was repaid while liquidators struggled to find profitable routes for VIRTUAL and MORPHO.
Impact
In total attacker extracted approximately 267 ETH through this strategy while leaving the protocol with the following bad debt:
| Asset | Bad Debt (tokens) | Bad Debt (USD) |
|---|---|---|
| VIRTUAL | 1,777,087.31 | $1,323,930 |
| MORPHO | 118,879.67 | $202,271.84 |
| AERO | 253,458.31 | $191,960.65 |
| Total | $1,718,162.49 |
Reserves held by the protocol in these markets, that can be utilized to cover this debt, are as follows:
| Asset | Reserves (tokens) | Reserves (USD) |
|---|---|---|
| AERO | 331,206.9534 | $252,048.49 |
| MORPHO | 13,857.9747 | $23,225.97 |
| VIRTUAL | 17,598.2385 | $13,286.67 |
Immediately following this event we used cap guardian to decrease borrow caps in the VIRTUAL, MORPHO, and AERO markets, effectively pausing borrows in these markets and ensuring a similar event cannot happen again in the near future. AERO reserves can fully cover the AERO bad debt, but VIRTUAL and MORPHO reserves are lacking. However, $2.7M in reserves exist across all core markets on Base, which can cover the $1.7M debt. We encourage the DAO to come to a consensus on the next steps to be taken in covering the bad debt in these markets.
Unliquidated Positions on Moonbeam
On Moonbeam, a handful of users with health factors < 1.0 borrowing USDC.wh have yet to be liquidated. These positions have not materialized as bad debt due to the exceptionally conservative collateral factors in place across all Moonbeam markets. Liquidators are likely encountering challenges in sourcing USDC.wh on Moonbeam, either swapping for it on Stella Swap or bridging via Wormhole. A description of the positions eligible for liquidation follows below.
| Borrower Address | Health Factor | Collateral Token(s) | Collateral Value (USD) | Debt token | Debt Value (USD) |
|---|---|---|---|---|---|
| 0xbe16892ed5185cbd69f3f2708de5263645240a65 | 0.87 | ETH.wh (3.9926), xcDOT (2,854.926), GLMR (18.6971) | $23,702.61 | USDC.wh (9,457.6686) | $9,453.89 |
| 0xe8ce20bf2149a374ad0e2b29a68623f95af14bc8 | 0.86 | xcDOT(5,264.5853), xcUSDC(10,826.8046), GLMR (49,968.0180) | $28,233.48 | USDC.wh (13,773.0123) | $13,767.51 |
| 0x89db10868fca68b529d55620d0e88ab4bf519f95 | 0.99 | GLMR (239,719.6717) | $9,972.34 | USDC.wh (3,724.9008) | $3,724.16 |
In theory, liquidators should be able to acquire USDC.wh from this GLMR/USDC.wh Uniswap V3 pool on Stella Swap: Address: 0xab8c3516...31f0fe393 | Moonbeam
Or, they can bridge USDC on https://portalbridge.com/. However, a swap on Stella Swap for USDC.wh yields zero liquidity, and a swap on Portal Bridge fails to find a quote. This partially explains why these positions are going unliquidated.
Base Changes 10/10 - 10/11
The following section gives statistics on how each market changed from 10/10/25-10/11/25
| Asset | Total Borrow | Total Supply | Utilization |
|---|---|---|---|
| USDC | -22% from 55.78M USDC to 43.50M USDC | -22% from 62.42M USDC to 48.49M USDC | +0% from 89.37% to 89.71% |
| USDS | -12% from 19.99K USDS to 17.56K USDS | -9% from 22.30K USDS to 20.32K USDS | -4% from 89.61% to 86.38% |
| EURC | -23% from 2.17M EURC to 1.67M EURC | -27% from 2.70M EURC to 1.99M EURC | +5% from 80.15% to 84.11% |
| WETH | -67% from 12.92K WETH to 4.31K WETH | -46% from 17.81K WETH to 9.56K WETH | -38% from 72.57% to 45.07% |
| DAI | -24% from 19.26K DAI to 14.73K DAI | +0% from 31.11K DAI to 31.11K DAI | -24% from 61.90% to 47.35% |
| VIRTUAL | +664% from 248.14K VIRTUAL to 1.90M VIRTUAL | +20% from 2.20M VIRTUAL to 2.64M VIRTUAL | +538% from 11.26% to 71.87% |
| AERO | -12% from 8.61M AERO to 7.58M AERO | -10% from 25.35M AERO to 22.77M AERO | -2% from 33.94% to 33.30% |
| WELL | -25% from 36.30M WELL to 27.40M WELL | -3% from 155.53M WELL to 151.19M WELL | -22% from 23.34% to 18.12% |
| cbXRP | -32% from 551.64K cbXRP to 374.91K cbXRP | -27% from 2.58M cbXRP to 1.90M cbXRP | -7% from 21.35% to 19.78% |
| tBTC | -48% from 2.33 tBTC to 1.21 tBTC | -25% from 11.41 tBTC to 8.56 tBTC | -31% from 20.40% to 14.10% |
| USDbC | +0% from 1.45K USDbC to 1.45K USDbC | -0% from 9.18K USDbC to 9.14K USDbC | +0% from 15.85% to 15.91% |
| LBTC | -59% from 9.07 LBTC to 3.69 LBTC | -1% from 47.41 LBTC to 47.15 LBTC | -59% from 19.14% to 7.84% |
| cbBTC | -45% from 73.98 cbBTC to 41.00 cbBTC | -5% from 552.91 cbBTC to 527.51 cbBTC | -42% from 13.38% to 7.77% |
| weETH | -29% from 19.38 weETH to 13.80 weETH | +7% from 183.00 weETH to 195.85 weETH | -33% from 10.59% to 7.05% |
| MORPHO | -25% from 571.59K MORPHO to 428.12K MORPHO | -7% from 6.00M MORPHO to 5.58M MORPHO | -19% from 9.52% to 7.68% |
| wstETH | +1% from 182.73 wstETH to 183.98 wstETH | -6% from 4.44K wstETH to 4.17K wstETH | +7% from 4.12% to 4.41% |
| cbETH | -2% from 57.16 cbETH to 56.06 cbETH | -2% from 2.14K cbETH to 2.10K cbETH | -0% from 2.67% to 2.67% |
| rETH | -0% from 22.89 rETH to 22.80 rETH | -0% from 963.73 rETH to 959.64 rETH | +0% from 2.38% to 2.38% |
| wrsETH | 0% from 0.04 wrsETH to 0.04 wrsETH | 0% from 114.47 wrsETH to 114.47 wrsETH | 0% from 0.03% to 0.03% |
Liquidations
- Total liquidations: 1,064
- Total Collateral Seized (USD): $12,530,499.04
- Total Debt Repaid (USD): $11,391,362.76
- Total Liquidation Bonus (USD): $1,139,136.28
- Total Liquidator Bonus (USD): $797,395.39
- Total Protocol Bonus (USD): $341,740.88
| Asset | Total Seized (Tokens) | Total Seized (USD) | Debt Repaid (USD) | Liquidation Bonus (USD) | Liquidator Bonus (USD) | Protocol Bonus (USD) | Liquidation Count |
|---|---|---|---|---|---|---|---|
| AERO | 6,461,847.820050 | $4,260,362.85 | $3,873,057.14 | $387,305.71 | $271,114.00 | $116,191.71 | 495 |
| cbBTC | 26.909904 | $2,962,759.68 | $2,693,417.89 | $269,341.79 | $188,539.25 | $80,802.54 | 163 |
| USDC | 1,618,569.336170 | $1,618,099.92 | $1,470,999.93 | $147,099.99 | $102,969.99 | $44,130.00 | 18 |
| cbXRP | 676,246.337230 | $1,361,792.80 | $1,237,993.45 | $123,799.35 | $86,659.54 | $37,139.80 | 123 |
| wstETH | 265.738512 | $1,130,711.23 | $1,027,919.30 | $102,791.93 | $71,954.35 | $30,837.58 | 11 |
| MORPHO | 348,656.941330 | $318,650.63 | $289,682.39 | $28,968.24 | $20,277.77 | $8,690.47 | 23 |
| WETH | 83.011261 | $302,631.90 | $275,119.91 | $27,511.99 | $19,258.39 | $8,253.60 | 71 |
| WELL | 10,782,486.960000 | $215,156.41 | $195,596.73 | $19,559.67 | $13,691.77 | $5,867.90 | 21 |
| tBTC | 1.857700 | $189,450.00 | $172,227.27 | $17,222.73 | $12,055.91 | $5,166.82 | 1 |
| VIRTUAL | 194,925.167899 | $102,377.72 | $93,070.66 | $9,307.07 | $6,514.95 | $2,792.12 | 126 |
| cbETH | 12.637570 | $50,666.10 | $46,060.09 | $4,606.01 | $3,224.21 | $1,381.80 | 7 |
| LBTC | 0.164579 | $17,323.00 | $15,748.18 | $1,574.82 | $1,102.37 | $472.45 | 1 |
| weETH | 0.130004 | $501.38 | $455.80 | $45.58 | $31.91 | $13.67 | 1 |
| EURC | 11.848420 | $13.75 | $12.50 | $1.25 | $0.87 | $0.37 | 2 |
| USDS | 1.666910 | $1.67 | $1.52 | $0.15 | $0.11 | $0.05 | 1 |
OP Mainnet Changes 10/10 - 10/11
| Asset | Total Borrow | Total Supply | Utilization |
|---|---|---|---|
| USDT0 | -2% from 216.21K USDT0 to 211.62K USDT0 | -2% from 240.38K USDT0 to 236.17K USDT0 | -0% from 89.94% to 89.60% |
| USDC | -64% from 2.63M USDC to 946.96K USDC | -59% from 2.95M USDC to 1.21M USDC | -12% from 89.07% to 78.35% |
| WETH | -87% from 2.99K WETH to 400.17 WETH | -76% from 3.78K WETH to 906.08 WETH | -44% from 79.22% to 44.17% |
| USDT | +59% from 139.06K USDT to 221.49K USDT | +19% from 219.62K USDT to 260.94K USDT | +34% from 63.32% to 84.88% |
| DAI | -38% from 147.82K DAI to 92.19K DAI | -28% from 202.68K DAI to 145.98K DAI | -13% from 72.93% to 63.15% |
| wstETH | -70% from 39.21 wstETH to 11.81 wstETH | -15% from 324.77 wstETH to 277.25 wstETH | -65% from 12.07% to 4.26% |
| rETH | -0% from 5.05 rETH to 5.05 rETH | -0% from 61.43 rETH to 61.27 rETH | +0% from 8.23% to 8.25% |
| OP | -76% from 218.04K OP to 51.29K OP | -8% from 2.11M OP to 1.94M OP | -74% from 10.34% to 2.64% |
| VELO | -0% from 4.38M VELO to 4.36M VELO | -7% from 77.12M VELO to 71.45M VELO | +7% from 5.68% to 6.10% |
| WBTC | 0% from 0.00 WBTC to 0.00 WBTC | 0% from 0.07 WBTC to 0.07 WBTC | 0% from 4.34% to 4.34% |
| weETH | -83% from 20.55 weETH to 3.43 weETH | -4% from 404.74 weETH to 387.59 weETH | -83% from 5.08% to 0.89% |
| wrsETH | -2% from 0.63 wrsETH to 0.62 wrsETH | -2% from 21.44 wrsETH to 21.12 wrsETH | -1% from 2.94% to 2.92% |
| cbETH | 0% from 0.00 cbETH to 0.00 cbETH | -27% from 0.38 cbETH to 0.27 cbETH | +37% from 0.04% to 0.06% |
Liquidations
- Total liquidations: 203
- Total Collateral Seized (USD): $399,314.07
- Total Debt Repaid (USD): $363,012.79
- Total Liquidation Bonus (USD): $36,301.28
- Total Liquidator Bonus (USD): $25,410.90
- Total Protocol Bonus (USD): $10,890.38
| Asset | Total Seized (Tokens) | Total Seized (USD) | Debt Repaid (USD) | Liquidation Bonus (USD) | Liquidator Bonus (USD) | Protocol Bonus (USD) | Liquidation Count |
|---|---|---|---|---|---|---|---|
| VELO | 11,059,224.120200 | $296,662.67 | $269,693.34 | $26,969.33 | $18,878.53 | $8,090.80 | 97 |
| OP | 184,528.945420 | $66,138.21 | $60,125.64 | $6,012.56 | $4,208.80 | $1,803.77 | 79 |
| wstETH | 4.779821 | $20,692.42 | $18,811.29 | $1,881.13 | $1,316.79 | $564.34 | 11 |
| WETH | 3.796947 | $14,263.28 | $12,966.61 | $1,296.66 | $907.66 | $389.00 | 10 |
| wrsETH | 0.332761 | $1,311.11 | $1,191.92 | $119.19 | $83.43 | $35.76 | 1 |
| weETH | 0.054727 | $212.15 | $192.87 | $19.29 | $13.50 | $5.79 | 1 |
| USDT | 21.736030 | $21.77 | $19.79 | $1.98 | $1.39 | $0.59 | 2 |
| USDC | 12.450140 | $12.46 | $11.33 | $1.13 | $0.79 | $0.34 | 2 |
Moonbeam Changes 10/10 - 10/11
| Asset | Total Borrow | Total Supply | Utilization |
|---|---|---|---|
| GLMR | +0% from 7.23M GLMR to 7.25M GLMR | -0% from 10.99M GLMR to 10.98M GLMR | +0% from 65.77% to 66.05% |
| xcUSDC | -60% from 79.17K xcUSDC to 31.96K xcUSDC | -10% from 130.34K xcUSDC to 116.85K xcUSDC | -55% from 60.74% to 27.36% |
| FRAX | -41% from 446.23 FRAX to 262.35 FRAX | -0% from 40.10K FRAX to 40.03K FRAX | -1% from 45.65% to 45.27% |
| xcDOT | -0% from 20.25K xcDOT to 20.25K xcDOT | -2% from 1.29M xcDOT to 1.26M xcDOT | +2% from 41.36% to 42.21% |
| xcUSDT | -42% from 46.75K xcUSDT to 26.92K xcUSDT | -3% from 98.06K xcUSDT to 94.79K xcUSDT | -40% from 47.68% to 28.40% |
| USDC.wh | -12% from 45.17K USDC.wh to 39.72K USDC.wh | -4% from 127.46K USDC.wh to 122.46K USDC.wh | -8% from 35.44% to 32.43% |
| ETH.wh | -9% from 1.20 ETH.wh to 1.09 ETH.wh | -0% from 34.12 ETH.wh to 33.97 ETH.wh | -8% from 3.51% to 3.22% |
| BTC.wh | -35% from 0.01 BTC.wh to 0.01 BTC.wh | -0% from 1.19 BTC.wh to 1.19 BTC.wh | -35% from 1.14% to 0.74% |
Liquidations
- Total liquidations: 626
- Total Collateral Seized (USD): $71,542.15
- Total Debt Repaid (USD): $65,038.32
- Total Liquidation Bonus (USD): $6,503.83
- Total Liquidator Bonus (USD): $4,552.68
- Total Protocol Bonus (USD): $1,951.15
| Asset | Total Seized (Tokens) | Total Seized (USD) | Debt Repaid (USD) | Liquidation Bonus (USD) | Liquidator Bonus (USD) | Protocol Bonus (USD) | Liquidation Count |
|---|---|---|---|---|---|---|---|
| xcDOT | 22,667.524417 | $55,977.96 | $50,889.05 | $5,088.91 | $3,562.23 | $1,526.67 | 199 |
| GLMR | 468,094.970853 | $14,396.11 | $13,087.37 | $1,308.74 | $916.12 | $392.62 | 361 |
| ETH.wh | 0.152945 | $596.28 | $542.08 | $54.21 | $37.95 | $16.26 | 29 |
| xcUSDC | 395.654710 | $395.65 | $359.69 | $35.97 | $25.18 | $10.79 | 21 |
| FRAX | 70.256520 | $70.05 | $63.68 | $6.37 | $4.46 | $1.91 | 7 |
| BTC.wh | 0.000494 | $51.51 | $46.83 | $4.68 | $3.28 | $1.40 | 1 |
| xcUSDT | 47.505578 | $47.63 | $43.30 | $4.33 | $3.03 | $1.30 | 6 |
| USDC.wh | 6.952570 | $6.95 | $6.32 | $0.63 | $0.44 | $0.19 | 2 |
Moonriver Changes 10/10 - 10/11
| Asset | Total Borrow | Total Supply | Utilization |
|---|---|---|---|
| xcKSM | -0% from 6.55K xcKSM to 6.54K xcKSM | -9% from 16.03K xcKSM to 14.65K xcKSM | +9% from 40.86% to 44.68% |
| FRAX | -16% from 64.40K FRAX to 54.30K FRAX | -0% from 327.30K FRAX to 326.25K FRAX | -15% from 19.68% to 16.64% |
| MOVR | +0% from 3.57K MOVR to 3.57K MOVR | -2% from 152.10K MOVR to 148.72K MOVR | +2% from 2.35% to 2.40% |
Liquidations
- Total liquidations: 74
- Total Collateral Seized (USD): $11,138.34
- Total Debt Repaid (USD): $10,125.76
- Total Liquidation Bonus (USD): $1,012.58
- Total Liquidator Bonus (USD): $708.80
- Total Protocol Bonus (USD): $303.77
| Asset | Total Seized (Tokens) | Total Seized (USD) | Debt Repaid (USD) | Liquidation Bonus (USD) | Liquidator Bonus (USD) | Protocol Bonus (USD) | Liquidation Count |
|---|---|---|---|---|---|---|---|
| MOVR | 2,964.786005 | $9,057.77 | $8,234.34 | $823.43 | $576.40 | $247.03 | 56 |
| xcKSM | 304.564304 | $1,792.99 | $1,629.99 | $163.00 | $114.10 | $48.90 | 16 |
| FRAX | 288.297200 | $287.57 | $261.43 | $26.14 | $18.30 | $7.84 | 2 |
Conclusion
Over $12M in liquidations occurred across all four chains, with protocol revenue from liquidations (as reserves) totaling over $350K. $1.7M has been incurred as bad debt in the core markets on Base, primarily in the form of VIRTUAL. However, the protocol possesses $2.7M in reserves on Base.

















