Recovery Plan: cbETH Incident and Moonwell Apollo Onboarding

For each affected borrower:

  1. cbETH collateral

    • Users are entitled to the full amount of cbETH seized

    • Minus the USD value of debt repaid at the time of seizure

    • cbETH was repriced using an actual price of $2,200 per cbETH, correcting erroneous oracle values

  2. Net remediation amount

    • Final repayment per borrower equals:
      Total collateral seized (USD) − Total debt repaid (USD)

This methodology ensures repayments correspond strictly to realized loss, not gross collateral value.

I’m quite confused. My cbBTC got liquidated, not my cbETH.
The price decrease of my cbETH caused a liquidation cascade because I was cross on my lending.
My other tokens got taken, my cbETH was actually untouched.

Check out this site we’ve compiled: https://cbeth-remediation.vercel.app/

There you can see all affected users, liquidation transactions, and remediation amounts owed. It normalizes remediation amounts to the type of collateral that was seized.

2 Likes

I thought i saw that some of the stolen cbeth had been recovered. Can anyone verify this.

Team, can we have an update on this or at least some sort of timeline so all of us can plan ahead? We just want reassurance.

2 Likes

Hey everyone! The MFAM Onboarding and cbETH Incident Restitution proposal (MIP-B58) is now live for voting. Your participation is key to helping the community resolve the cbETH incident.

Vote on MIP-B58 here: https://moonwell.fi/governance/proposal/moonbeam?id=147


Remember that the voting options are:

Option 1 — For: Approve the proposal to:

  • Transfer 310,301.6 USDC from the DAO treasury for cbETH restitution

  • Swap the USDC to ETH and combine it with 19.90098 recovered ETH

  • Repay impacted wallets proportionally

  • Transfer 19,095,528 WELL from the Foundation treasury

  • Stake the WELL and distribute stkWELL to MFAM and stkMFAM holders

Option 2 — Against: Reject the proposal. No treasury transfers, repayments, or stkWELL distributions will occur.

Option 3 — Abstain: Indicate neutrality on the proposal.


Why do $well holders vote on the $mfam treasury?

It’s been over two weeks and there hasn’t been a single response from you, neither regarding cbETH holders nor mfam holders.

you think its fair to use the 310k treasury and compensate mfam holders with 19m well ( ~85k)…

Is it really not possible to handle this fairly and transparently?

I understand that it needs to be done quickly, but then please compensate the full amount of 310k with well tokens…you’re just throwing out a number without any explanation…

And additionally, it’s not even possible to choose the distribution…the $well should only go stkMFAM (like first proposal 1month ago) with a snapshot today and exclude team/founder controlled wallets like luke mentioned at the community call

Thank you for Proposal. While I appreciate this initial step, the current funds only cover a small portion of our $2.62M actual net loss.
Could the team provide a concrete roadmap for the “further restitution” mentioned in the proposal? We need a clear schedule for when and how the remaining gap will be closed to make all affected users whole.

1 Like

The fact that even at Luke’s request his address has not been removed is a harsh lesson about the Moonwell team. Unfortunately, we can’t be surprised why Moonwell’s price is where it is. It doesn’t matter anymore… and Fechuky_25 is just a common mafioso.

You are right! As a $well hodler and moonwell believer It bothers me :face_with_steam_from_nose: bad debt is one thing but user funds should be covered immediately!

Look at the docs, Moonwell has a mechanic to cover lost funds, safetymodule!

everyone who stacked $Well knows it! Imo we should use the safetymodule and cover the whole 2m+ from there, btw well stakers received like a 20m$ Airdrop just a couple months ago…so it should be no problem to cover 2m from the safetymodule!

@amonss yes, it is crazy! Moonwell has a safetymodule to cover funds…and we never voted for this

My wallet and any other contributor wallets will not be included in the MFAM/stkMFAM totals.

I agree with @horikorg . We need a roadmap/timeline for the “further restitution”. Maybe a fixed percentage of our accumulating reserves allocated to this remuneration, until the losses are fully recovered.

If we can’t do that, a large amount of capital is going to leave Moonwell.

1 Like

Had some time to collect my thoughts…

Response to Recovery Plan: Full Position Restoration Required

Who I Am

I’m one of the 181 borrowers affected by the cbETH oracle incident from February 14–18. My wallet (0x3e2178...ad703b) had approximately $90,400 in collateral seized across 8 liquidation events, with only ~$42,880 in debt repaid — leaving me with a net loss of roughly $47,500. That was my life savings.

As of January 31, my supplied collateral was: 21.05 weETH, 18.93 cbETH, and 1.1 ETH — plus any interest accrued between then and the incident. At ~$2,200/ETH, that’s roughly $90,376 in collateral, which matches the $90,403.89 the remediation dashboard shows was seized. All of it — gone in 8 liquidation events over a matter of minutes, because of a bug in a governance proposal.

I maintained a healthy position. I did nothing wrong. This wasn’t market volatility. This wasn’t a bad bet. This was a protocol-level failure caused by a governance proposal that Moonwell itself pushed through.

In fact, just days before this incident, when ETH was dumping, I was actively protecting my position. I pulled thousands of dollars out of my bank account and sold other positions at a loss to cover my loan and keep my health factor safe. Real money, out of my own pocket, to be a responsible borrower on this protocol. That’s money I’ll never get back either — and it doesn’t show up in any remediation spreadsheet. I did everything a borrower is supposed to do, and then the protocol itself destroyed my position anyway.

Here is a screenshot of my positions from before I sold my AERO position to help cover the loan during the dump from Jan 31.

What Actually Happened

Let’s be very clear about the chain of events, because the framing matters:

  1. MIP-X43 was a Moonwell governance proposal. It was not an external attack. It was not an oracle failure outside the protocol’s control. It was code that the DAO reviewed, approved, and executed.

  2. The bug was elementary. The oracle used the raw cbETH/ETH exchange rate (~1.12) instead of multiplying it by ETH/USD to get the actual dollar price (~$2,200). SlowMist’s founder called it a “very low-level bug.” This should have been caught by any competent audit or review process.

  3. The code was co-authored by an AI model without adequate human review. GitHub commit records show the oracle configuration logic was co-written by an AI. Using AI-generated code on the single most critical component of a lending protocol — the price oracle — without rigorous human verification is reckless.

  4. There was no circuit breaker. Once the bad oracle went live, liquidations ran unchecked for days because fixing it required a 5-day governance vote and timelock. A protocol managing $90M+ in TVL had no emergency mechanism to pause liquidations from an obviously broken oracle.

  5. This is the third oracle incident in six months. October 2025: AERO/VIRTUAL/MORPHO pricing discrepancy, $12M in liquidations, $1.7M bad debt. November 2025: wrsETH oracle malfunction, $3.7M bad debt. February 2026: cbETH, $2.68M in losses across 181 borrowers. This is not bad luck. This is a systemic failure in the protocol’s risk management and deployment practices.

Moonwell’s own post-mortem acknowledges that users “trusted Moonwell with their assets and were harmed through no fault of their own.” That statement is correct. Now the response needs to match the severity of the failure.

Why the Current Proposal Falls Short

1. $310K immediate against $2.68M in losses is not serious

That’s 11.5% upfront. For my position, that translates to roughly $5,500 now with the remaining ~$42K dependent on “future protocol revenue” over 12 months. You’re asking the people you harmed to bet on your future earnings. We already bet on your protocol once and lost everything.

2. Compensation in USDC forces a loss on top of a loss

If ETH appreciates over the next 12 months — which many of us were positioned for by holding ETH-denominated collateral — receiving USDC at February 2026 prices means we’re effectively being forced to sell our ETH at the worst possible time. We didn’t choose to exit our positions. The protocol liquidated us by mistake.

Compensation must be denominated in the assets that were seized — cbETH, not USDC. If the protocol cannot source cbETH, then WETH at minimum. Dollar-denominated repayment on an ETH-denominated loss is not making anyone whole.

3. Net loss calculation ignores the full picture

The methodology calculates: collateral seized (USD) minus debt repaid (USD). But many of us, myself included, had carefully structured positions with specific collateral compositions and borrowing strategies. I held 21.05 weETH, 18.93 cbETH, and 1.1 ETH — a deliberate mix of liquid staking derivatives chosen for their yield characteristics. We didn’t just lose a net dollar amount — we lost our entire positions, our collateral, and we’re still carrying bad debt.

True remediation means restoring positions: returning collateral AND restoring the corresponding debt positions so borrowers are back where they were on February 14. Anything less is a partial settlement dressed up as a recovery plan.

4. A 12-month Sablier vesting with expiry is unacceptable

The protocol makes a catastrophic error, wipes out users’ life savings, and then puts a deadline on when those users can claim their money back? If someone misses the window because they’re dealing with the fallout of losing their savings, they forfeit their claim? This is not how you rebuild trust.

What I’m Asking For

  1. Full position restoration — my 21.05 weETH, 18.93 cbETH, and 1.1 ETH returned, with corresponding debt positions reconstructed to their pre-incident state as of February 14, 2026.

  2. Compensation in-kind — cbETH or WETH, not USDC. We held ETH-denominated assets for a reason.

  3. Accelerated timeline — the protocol has access to the Aera funds and other treasury resources. Waiting 12 months for revenue to trickle in while users sit with wiped accounts is not accountability.

  4. No expiry on claims — affected users should be able to claim remediation without a ticking clock.

  5. Structural changes — emergency pause mechanisms, mandatory independent audits for all oracle changes, and an end to deploying AI-generated code on critical infrastructure without multi-party human review.

Final Thoughts

I’ve used Moonwell as a core part of my DeFi strategy. I trusted this protocol. I maintained a healthy position. I did everything right — including spending thousands of dollars out of my own bank account days before the incident to keep my loan safe during a market dip. And I lost my life savings because of a bug that should never have made it to production.

The net loss calculation doesn’t capture the full damage. It doesn’t account for the money I pulled from my bank to shore up my position. It doesn’t account for the other positions I sold at a loss to cover my loan. Those are real, additional losses that happened specifically because I was being a responsible borrower on your platform — losses that are now compounded by the fact that the position I was protecting got wiped out by the protocol itself days later.

The community is watching how Moonwell handles this. A protocol that makes its users whole after its own mistake earns long-term trust and loyalty. A protocol that offers partial reimbursement in the wrong denomination on a 12-month maybe-timeline with an expiry date does not.

181 borrowers. $2.68 million. This is not an abstract governance exercise — these are real people who lost real money because of a real failure in your process. Act accordingly.

6 Likes

There is a large error in the calculation of what is owed on https://cbeth-remediation.vercel.app, especially for certain tokens.

Token pair Real ratio on Feb 15 Ratio used
cbETH/ETH 1.122 1.071
weETH/ETH 1.087 1.064
wstETH/ETH 1.227 1.158
rETH/ETH 1.158 1.158

Some notable things here are that the rETH price and wstETH price seem to be exactly the same. And everyone really knows by now that the cbETH ratio should be 1.12.

In most cases, the ‘Owed (Collateral)’ should be about one-eleventh of the ‘Collateral Seized’, and about one-tenth of the ‘Debt Repaid’ (as was done in the spreadsheet here on Feb 18)

But cbeth-remediation.vercel.app isn’t calculating this way. The numbers for ‘Owed (Collateral)’ for some pairs are off by more than 2x.

I am in the exact same boat. I even vouched moonwell to many friends and family. Consider the ramification of trust on all levels of our life if this is the best remediation we can get. I’m upset with this proposal because we waited additional 2-3 weeks of discussion from the forum for only Moonwell team to revert to their original plan. What the hell was even the point of waiting and insightful discussions if the decision was always the original proposal.

1 Like

Our dataset includes token prices captured at the exact time of each liquidation, using the oracle price recorded for that liquidation transaction. For cbETH, we used the last valid oracle price of $2,210.33, before the feed updated to $1.12. For transparency, these prices are displayed in the app. For example:

@AnthiasLabs For example, just in the screenshot shown in your message, the collateral price says wstETH: $2,389.51 and WETH: $2,064.20. This gives a wstETH/WETH ratio of 1.1576. This would imply an incredible de-peg of lido staked ethereum. wstETH/WETH has not been at this value for 2 years! These prices could not have been taken at the same time and do not reflect the actual losses in ETH. The liquidation penalty is 10% of the debt repaid. For instance, in the example you show in the screenshot, this address is owed 53.5 WETH, not 21.3 WETH. This was done correctly for the most part in the previous spreadsheet. Why has this changed?

It is easy: in all these liquid staked eth cases other than cbeth, the amount owed is 1/11 in the denomination of the collateral seized.

In the case of cbETH, if you divide your given price $2,210.33 by the price of WETH $2,064.20, you get 1.07079, which is clearly not the 1.12 we all know and love. You have a broken oracle.

Multi-year price graphs attached of wstETH, weETH, and cbETH vs ETH, according to CoinGecko.

2 Likes