The attacker never touched Moonwell's code. Pushing MAMO from a cent to 47 cents in a pool with barely $1 million of daily volume was enough, and it is the protocol's second collateral-pricing failure this year.
Moonwell lost roughly $8.7 million on Thursday after an attacker inflated the price of a token the lending protocol accepts as collateral on Base, then borrowed real assets against the inflated position. Nothing in Moonwell's contracts failed. The attacker bought a price.
MAMO is the token of Mamo, an AI-driven personal finance app built on Base. It carried a market capitalisation of about $6 million and roughly $1.18 million in daily volume before the attack, according to CoinGecko, and it trades mainly in two pools: MAMO/cbBTC on Aerodrome's SlipStream and MAMO/USDC on Uniswap V4. Thin markets are cheap to move. Over the 24 hours around the exploit, MAMO printed a low of $0.0101 and a high of $0.4739 on the Aerodrome pool, GeckoTerminal data shows, a range of roughly 47 times. Moonwell's oracle read that price and lent against it.
The borrowing itself was unremarkable. Blockaid, which flagged the activity as it happened, counted 50.6 cbBTC worth more than $4 million leaving Moonwell's mCBTC market. One Base transaction at 09:20:11 UTC drew 14.33 cbBTC, about $1.15 million, for roughly a cent in gas. The same address pulled 560 ETH worth around $1.42 million through Moonwell's WETH unwrapper and pushed USDC to Ethereum via Circle's cross-chain transfer protocol. CertiK and PeckShield both put the total at about $8.7 million, now consolidated into 8,728,318 DAI at a single Ethereum address.
That address was empty until 21 August, when it received about 0.1 ETH from Tornado Cash followed by roughly 99 ETH across five transfers through the Stargate and Across bridges. Two days before the attack it approved and deposited into Moonwell contracts. Someone spent the better part of a week getting ready. Tornado Cash withdrawals also seeded the wallet behind the governance exploit that cost Term Finance $8.5 million four days earlier, which does not make it the same actor, only the same playbook.
Moonwell's answer was to switch the protocol off. Two hours after the borrowing began, at 7:21 a.m. Eastern, it posted the only public statement it has made so far.
Setting borrow caps to 1 wei is a kill switch dressed as a parameter change. It halts new borrowing across every core market on Base, not only the one that was attacked, and Moonwell applied the same figure to the supply caps for MAMO and its own WELL token. The protocol held $71.5 million in total value locked, $68.2 million of it on Base, with $32.6 million out in active loans, according to DefiLlama. All of that lending capacity now sits idle until governance restores the caps. It is a blunter version of the choice BounceBit made when it killed its own layer-1 rather than ship a patch it did not have.
Mamo, whose token was the instrument rather than the target, moved to separate itself from the damage, saying its own contracts were never compromised.
Mamo accounts route deposits to Moonwell and to Morpho on Base, and the project said the Morpho side is unaffected. Its USDC depositors may still be unable to withdraw until liquidity returns to Moonwell, which is another way of saying that a finance app with functioning contracts has been taken offline by a lending market's parameter file.
This is the second time this year Moonwell has mispriced collateral. In the earlier incident, a Chainlink OEV wrapper enabled through governance left the protocol reading the raw cbETH/ETH exchange rate without multiplying by ETH/USD, valuing cbETH at roughly $1.12 instead of about $2,200. Liquidators seized 1,096.317 cbETH and the protocol absorbed $1.78 million in bad debt, according to Moonwell's own incident summary. Contributors spotted the error in four minutes. Fixing the oracle took a five-day governance vote and a timelock.
Remediation for those cbETH suppliers is still unresolved. A counter-proposal filed on 22 August argues the foundation treasury rather than a reserve residual should fund repayments, and a forum thread opened on 26 August asks what happens to suppliers who were never liquidated but still cannot withdraw their deposits. Moonwell has not settled the bill from its last pricing failure and has now booked another.
Listing a token as collateral is a governance decision, not an accident. Somebody proposed accepting a $6 million asset with about a million dollars of daily volume against real bitcoin and ether, and somebody voted for it. That question is live across the industry: Aave's Horizon market spent this week weighing a Neuberger Berman fund as collateral, which is the same decision made at the opposite end of the liquidity spectrum.
Three days before Thursday, Moonwell was publicly arguing for a wider collateral menu, suggesting tokenised stocks could work on the protocol once Chainlink finishes its research into round-the-clock price feeds. Coinbase, whose first onchain stock under Abu Dhabi's new rules was Apple, put tokenised equities on Base on 24 August. Whether a lending market that could not safely price a $6 million token should be pricing Apple shares is a matter for the monthly governance call, set for 17:00 UTC on Thursday with founder Luke Youngblood among the speakers and scheduled long before any of this happened.
DefiLlama puts Moonwell's annualised fees at $8.6 million. Thursday cost it a year of them in about two hours.