eation whose constructor ran the whole thing atomically):
① pump the v4 pool
② supplyCollateral 20,599 NOTHING
③ borrow 24,691.89 USDG
④ dump NOTHING back into the pool
5/
⑤ liquidate its own position, repaying only 914.45 USDG → Morpho returns all 20,599 NOTHING to the liquidator (= attacker)
⑥ sell the returned collateral
⑦ net 17,800.74 USDG to an EOA
badDebtAssets written off: 23,777.45 USDG.
6/
Where the loss landed. The bad debt was socialized 100% onto the MonkeyHood / Partner VaultV2 0x19d55f7FE2d3962796F5825CbDae2dd493Be0986, which held 100% of that market's supply shares. The vault realized a ~95% write-down that has not recovered since.
7/
⚠️ STILL OPEN — verified today at block 55,530,002:
• oracle address unchanged (still the extsload/slot0 contract)
• vault collateralToken cap still 50,000 USDG (not zeroed)
• price() still live & manipulable
• no remediation tx — only a 414 USDG adapter withdrawal since
8/
Fairness / scope: this is NOT a Morpho bug. @MorphoLabs markets are permissionless and behaving exactly as specified, and Morpho's own oracle guidance warns against raw AMM spot feeds. The vulnerable decision is Longbow's: a spot oracle wired to a live market with a non-zero cap.
9/
The rest of Longbow is not exposed to this vector — the other 54 markets use Uniswap V3 TWAP (e.g. PONS, backed by a deep pool w/ observationCardinality 20,000) or Chainlink feeds. NOTHING is the only market reading a raw spot price. But one open market is enough.
10/
Actionable asks for @longbowlend:
1️⃣ set the NOTHING collateralToken cap to 0 (stops new allocation immediately, no timelock)
2️⃣ retire/replace the oracle with a TWAP or Chainlink feed
3️⃣ audit every market's oracle bytecode for slot0/extsload vs observe()/latestRoundData
11/
cc curators & ecosystem for visibility: @SteakhouseFi @robinhoodcrypto @ponsdotfamily
Read-only analysis, no funds touched, all reasoning reproduced on a mainnet fork. Reproducible IOCs above.
#DeFi #RobinhoodChain #bow
September 6, 2026 24 5