Incidents

Moonwell: donation inflated exchange rate on thin-liquidity oracle

Illustration: Oracle And Exchange Rate Manipulation

Published Oct 20, 2026

Project
Moonwell
Chain
Base
Date
Aug 27, 2026
Loss
$8.70M
Class
Oracle And Exchange Rate Manipulation
Basis
Project post-mortem or audit firm analysis

What happened

On August 27, 2026, Moonwell's MAMO lending market on Base was exploited for approximately $8.7 million. The attacker sent MAMO tokens directly to the mMAMO receipt-token contract instead of depositing through the normal mint function. This bypassed the protocol's supply cap and inflated the exchange rate, making each existing mMAMO share represent far more underlying MAMO. Simultaneously, the attacker bought MAMO across decentralized exchanges with very thin liquidity, driving the Chainlink oracle price up roughly 3,700%. By combining an inflated exchange rate with an inflated oracle price, the attacker created over $22 million in paper collateral and borrowed $11 million in cbBTC, WETH, USDC, and wstETH before liquidations could respond.

Why it was possible

Two independent design gaps compounded into a single failure. First, the supply cap introduced under governance proposal MIP-B48 only checked tokens flowing through the deposit function. It did not account for tokens transferred directly to the receipt-token contract, leaving the exchange rate unprotected against unsolicited donations. Second, the oracle used to price MAMO collateral derived its feed from the same thin on-chain liquidity the attacker was trading against. No secondary price source, time-weighted average, or deviation check existed to contest a sudden spike. Because both halves of the collateral calculation—the exchange rate and the asset price—could be manipulated by the same wallet in the same sequence of transactions, the protocol accepted fabricated collateral value as real borrowing power.

How to protect your protocol

Check your own code

Sources

How this was prepared: compiled from the sources above with the help of automated tools, then reviewed by the Foothold security team before publication.

Give Atlant a task Could the same thing happen in your code? Get it checked →