Ribbon Finance, now part of the Aevo ecosystem, lost about $2.7M in a hack targeting a legacy smart contract, with funds split across 15 wallets and some consolidated.
Blockchain analysts on X said the hack occurred days after Ribbon Finance updated its oracle and options logic. This allowed the attacker to drain hundreds of Ether and other tokens.
The old contract of @ribbonfinance has been drained for a total of $2.7M.
Exploit contract: 0x3c212A044760DE5a529B3Ba59363ddeCcc2210bE
Theft addresses:
0x354ad0816de79E72452C14001F564e5fDf9a355e
0x2Cfea8EfAb822778E4e109E8f9BCdc3e9E22CCC9… pic.twitter.com/sXKDYoL4RS— Specter (@SpecterAnalyst) December 12, 2025
Web3 security researcher Liyi Zhou detailed how the exploit hinged on weaknesses in the Opyn/Ribbon oracle architecture. According to Zhou, the attacker manipulated price-feed proxy contracts, injecting fabricated expiry prices for assets such as wstETH, AAVE, LINK, and WBTC into the shared oracle system using a single expiration timestamp.
This manipulation enabled the attacker to open sizable short positions using oTokens against Ribbon’s MarginPool. Because the settlement process relied on the falsified oracle data, the protocol released significant amounts of WETH and wstETH, thousands of USDC, and multiple WBTC through redeem-related functions, directing the assets to attacker-controlled addresses.
Oracle upgrade exposed a structural weakness
The breach followed an oracle pricing update implemented six days earlier, which introduced 18-decimal support for certain assets, including stETH, PAXG, LINK, and AAVE. However, other tokens—such as USDC—continued to operate under an eight-decimal standard. Zhou noted that this mismatch in decimal handling played a role in enabling the exploit.
An X user Weilin pointed out that the attacker did not bypass the protocol’s permissioning system when creating oTokens. All underlying assets were properly whitelisted, meaning the malicious activity exploited logic flaws rather than violating token creation rules.
The latest @ribbonfinance attack appears to be a oracle configuration fault.
6 days ago, the owners updated the oracle pricer which uses 18 decimals price for stETH, PAXG, LINK and AAVE. However, other assets like USDC price still at 8 decimals.
creation of OToken is not a… pic.twitter.com/4cpZUNTNun
— Weilin (William) Li (@hklst4r) December 13, 2025
The exploit began with the deployment of unusually structured options, including a stETH call option with a strike price of 3,800 USDC, collateralized with WETH and set to expire on Dec. 12. Multiple oTokens tied to these options were created and later used to drain funds from the system.
Investigators saw repeated proxy admin calls, using ownership and implementation updates via delegate calls to manipulate the oracle. By forcing multiple assets to share the same expiry timestamp, the attacker triggered oracle updates that reflected fabricated price data.
As a result, the protocol interpreted stETH prices as significantly exceeding strike levels, allowing the attacker to burn 225 oTokens in exchange for more than 22.46 WETH. In total, the exploit yielded roughly 900 ETH.
Web3 security firm Spectre first identified the stolen funds moving into a wallet beginning with 0x354ad…9a355e. From there, the assets were spread across 14 additional addresses, many holding about 100 ETH each. Some of the funds have since been routed into what Zhou described as treasury-style consolidation wallets.
An experienced fintech marketer, now diving into Web3, crypto markets, and decentralized systems. Breaking down complex blockchain developments for accessible understanding.



