The RWA Hacks Nobody Audited: Where Tokenized Assets Actually Break

Author(s): Pavel Morozov, Timofey Fedotov, Andrey Simaranov
Security researcher(s) at MixBytes
The pattern hiding in the incident list
Why RWA strips away the safety nets
The three failures, and what would have stopped each
The token is built to trust the off-chain process
The uncomfortable part: the code was audited
What we do about it
Real-world assets are the fastest-moving story in crypto as of today. Tokenized treasuries, private credit, gold, and stocks have pulled tens of billions of dollars on-chain, and the biggest names in traditional finance - BlackRock, Franklin Templeton, and the clearing house that settles nearly every US stock trade - are now issuing or clearing tokens directly. The pitch is clean: take a safe, boring, yield-bearing asset and put it on rails that never close.
But over the last two years, a string of RWA and RWA-adjacent protocols have lost money - tens of millions at a time - and almost none of it was lost the way people expect. The tokenization technology did not fail. The smart contracts, in most cases, had been audited. The money left through a seam that a standard code audit does not cover at all. This article walks through what actually happened, names the seam behind most of it, and shows what would have caught it.
The pattern hiding in the incident list
Here are the headline failures from the last year and a half, the ones that actually matter now:

  • Ostium (Jul 2026), ~$18M. An RWA perpetuals exchange (commodities, forex, equities). A compromised oracle-signer key submitted future-dated prices and drained the vault. When the oracle is the payout, a bad price is not a mispriced loan - it is a direct withdrawal.
  • StablR (May 2026), ~$13.5M minted, ~$2.8M extracted. A Malta-licensed, MiCA-compliant fiat-backed stablecoin issuer. One key of a one-of-three minting multisig was compromised; the attacker made themselves admin, removed the real signers, and minted millions of unbacked USDR and EURR. A regulated issuer, drained through its own mint authority.
  • Stream Finance (Nov 2025), disclosed a $93M loss, with ~$285M owed to lenders. A yield "stablecoin" driven by off-chain fund-manager strategies. The manager lost the money off-chain, the hole was hidden behind opaque accounting and curator loops, and lending markets had hardcoded the token at one dollar - so nothing on-chain flinched until it all repriced at once. It took Elixir's deUSD down 98% with it.
  • Zoth (Mar 2025), ~$8.4M. An RWA restaking protocol built on tokenized treasuries. A compromised deployer key let the attacker upgrade a vault proxy to malicious logic and drain the underlying collateral - the largest single RWA-specific exploit of the first half of 2025.
  • CrediX (Aug 2025), ~$4.5M. A Sonic-based lending protocol. An attacker was quietly granted admin, bridge, and pool roles through the access-control manager days in advance, then minted unbacked credit tokens and borrowed against them. The team vanished afterward.
  • Usual USD0++ (Jan 2025). An RWA-backed yield stablecoin. Lending markets had hardcoded the yield-bearing bond at one dollar; when the issuer abruptly introduced a redemption floor well below that, the hardcoded markets hit full utilization and trapped lenders behind triple-digit borrow rates, while parallel markets that tracked the real price liquidated leveraged holders as USD0++ fell toward that floor.
That is six incidents in eighteen months, and this is not the whole list. Adjacent cases such as the KelpDAO bridge failure (compromised LayerZero DVN under a 1-of-1 configuration, no on-chain code bug found) that left Aave carrying nine-figure bad debt belong to the same operational-seam family; rsETH itself is liquid restaking rather than an RWA, but the mechanics and the resulting unbacked-collateral bad debt are the same pattern seen in StablR. The older cautionary tales - Maple's off-chain borrower default after FTX in 2022, Tangible's real-estate-backed USDR (a different token from StablR's, same ticker) draining to fifty-one cents in 2023 - rhyme with these, but the pattern is clearest and largest in the recent set.
Read them together and a shape appears. Almost every one reduces to one of two root causes: an off-chain writer that got compromised - the role, bot, or key that pushes a price or mints supply (Ostium, StablR, Zoth, CrediX) - or a hardcoded or stale oracle that kept the risk controls from ever firing (Stream, Usual, and the downstream lenders in almost all of them). A few are even simpler: a real borrower defaulted, or an illiquid reserve could not be sold fast enough in a run.

What almost none of them are is a clever exploit of tokenization itself. RWA rarely invents a new bug class. It takes DeFi's oldest ones - a mispriced oracle, an unbounded mint, a compromised key, an unclosable liquidation - and strips away the safety nets that used to contain them. Two of those root causes - the compromised writer and the hardcoded oracle - are really operational and configuration failures; they would sink a purely crypto-native protocol too.

There is exactly one failure that is specific to RWA, and it is the quietest: the tokens stop being backed by the thing they represent, and nothing on-chain notices by itself. Goldfinch is the clean case - heavily audited code, no code bug, but real borrowers stopped paying and the tokens outran their backing until depositors ran. That gap has a name and a fix: proof-of-reserves - a live, on-chain check that issued supply never exceeds real reserves. It is the one RWA-native control, and almost nobody enforces it inside the token.
Why RWA strips away the safety nets
To see why the old bugs bite harder here, you have to look at one specific place: the point where an off-chain number crosses onto the chain.

Every RWA protocol lives or dies by a single number - the price, the net asset value (NAV), or the reserve balance of the thing it represents. That number does not exist on-chain. It is computed off-chain, by a fund administrator, a custodian, or a pricing bot, and then written on-chain by some privileged party. A tokenized treasury fund does not have a market price the way ETH does; it has a NAV that one administrator calculates once a day and one key pushes on-chain. That crossing - we call it the junction - is where the value enters, and it is where the value leaves.

A crypto-native asset has natural defenses here. ETH trades on dozens of venues around the clock, so an oracle can aggregate many sources, cross-check them against a live market, and flag anything that drifts. An RWA usually cannot do any of that. A fund's NAV has exactly one legitimate source - the administrator - so there is no crowd to aggregate and no market to check against. The strongest oracle designs are simply not available to most RWA issuers; they are forced into the weakest ones, a single signed value on a single key, and then everything downstream trusts it.

Now add leverage. A five percent error in a wrapper's NAV is a footnote when the token sits in a wallet; at four-times leverage it is a twenty percent error on your equity - the difference between a healthy market and a cascade. And the collateral fights back: most RWA reprices once a day, settles a day or more later, and may have no liquid secondary market. Leverage assumes you can exit fast; RWA collateral assumes you cannot. Overlay the two and positions cannot be closed when they go bad - which is exactly how bad debt sits unrealized on a dashboard that still looks green.
The three failures, and what would have stopped each
Break the pattern into its parts and the mitigations become concrete.

Failure one: the off-chain writer gets compromised. Ostium, StablR, and Zoth are the same story told three ways. A privileged key - a minting role, an oracle signer, a deployer, one signer of a thin multisig - was exposed through off-chain infrastructure, and once an attacker held it, the contract did exactly what it was told. No contract bug was involved; the contract was obeying a trusted party that was no longer trustworthy. StablR is the sharpest version: a regulated, MiCA-licensed issuer whose mint sat behind a one-of-three multisig, which means any single compromised key was enough to rewrite the signer set and print unbacked tokens. A license is not a security control.

The mitigation is a stack. On-chain, bound what a single write can do: a peg cap so a stablecoin never prices above a dollar, a deviation limit so no write can move the number too far, and a secure-mint check that refuses to issue above the reported reserve. Off-chain, review the key that holds this power like the crown jewel it is - custody, rotation, real multisig thresholds (not one-of-three on the mint), and the whole pipeline that lets a bot sign a value. That off-chain half is where the biggest failures originate, and almost no one reviews it, because a code audit stops at the contract boundary.

Failure two: a hardcoded or stale oracle keeps the brakes from firing. Stream and Usual share this. Someone, somewhere, wired a token's price to a constant - one dollar - or to a feed with no freshness check. As long as nothing forced a re-price, the risk controls never noticed the asset had moved. Hardcoding an oracle is the single most common root cause of curator losses on this layer, and it has repeated over and over.

The mitigation is a real oracle discipline: a value bounded so manipulation is pointless, an on-chain freshness check (with the subtlety that a daily NAV legitimately does not update on weekends, so the check must be calendar-aware), a deviation guard, and - wherever the asset trades on any real market - a cross-check against that market. The recurring anti-pattern is a price that is technically "set" but never actually re-prices; it protects you right up until the asset moves, which is the only moment it mattered.

Failure three: the collateral cannot be sold or redeemed in time. Tangible's USDR is the clean example - reserves that were real but mostly real estate, and you cannot sell a building in an afternoon; when holders ran, the thin liquid buffer drained and the peg broke. Maple is the credit version: a real borrower defaulted, and no on-chain mechanism can force repayment of an off-chain loan.

The mitigation is not code but an economic review before the leverage goes live: how big is the liquid buffer, how fast does the collateral settle, what is the liquidation path when the asset only redeems weekly? "No liquidations have happened" is not reassurance here - with illiquid collateral an insolvent position simply does not get closed, the loss stays off the books, and the dashboard stays green while the hole grows.
The token is built to trust the off-chain process
There is a deeper reason these failures cluster at the junction: the token contracts are designed to trust it. A tokenized asset comes in two shapes. A thin wrapper - most tokenized stocks, gold, and treasuries - is a near-standard token with two buttons, mint and burn. When the issuer buys the real share off-chain, a privileged key presses mint; the contract checks only that the caller is allowed to, not that the reserve grew or the price is right. The amount is whatever the issuer's off-chain process says. So supply integrity rests entirely on one key - which is the Zoth and StablR story exactly: no clever exploit, just someone pressing mint who should not have been able to.

The other shape, the permissioned token (the ERC-3643 standard for regulated securities), checks every transfer on-chain against an identity registry and a compliance rulebook. Far more machinery - but it hands the issuer superpowers written into the code: freeze a wallet, force a transfer, reassign a holder's whole balance. That last exists so an investor who loses their keys can recover; the uncomfortable part is that recovery and confiscation are the same function, so whoever holds the issuer's keys can move anyone's tokens. Yet both shapes, opposite as they are, share one blind spot: nothing in either contract links tokens in circulation to the assets behind them. "Supply matches reserves" is something outsiders can watch but the contract never enforces - not an oversight to patch, but inherent to putting an off-chain asset on-chain.
The uncomfortable part: the code was audited
Which is why the next fact should reframe how the industry buys security. Most of these protocols had audits - Goldfinch by two top-tier firms, Ostium by several - and the code was, by and large, correct on the day it was reviewed. That is the whole problem. A point-in-time audit is a photograph, and these systems fail like video: supply drifts above reserves after the review, a curator hardcodes an oracle six weeks after the listing, a NAV goes stale on a Saturday, a signer key leaks through infrastructure the audit never saw.

So the RWA security problem has three legs, and the market sells one. The on-chain code, which the audit covers well. The off-chain half - key custody, the signer pipeline, the NAV computation, custodian reconciliation - where the largest incidents actually started, and which almost no one reviews. And the continuous half - watching, in real time and from outside, the handful of invariants the incidents already handed us. The incidents wrote the checklist. The only question is whether anyone is reading it, across all three legs, while the protocol is live.
What we do about it
At MixBytes we audit these systems, and we have caught exactly these bug classes before production: an inverted redemption price that overpaid on every redeem, and a signed reserve proof whose signature was never checked. But we treat the audit as the start of coverage, not the end.

The useful thing about this whole failure record is that almost all of it is observable on-chain, without the issuer's cooperation. Supply against reserves (regulation is moving toward mandatory reserve attestations under regimes like MiCA), NAV freshness against a market-aware heartbeat, the oracle against any real secondary market, every privileged-role change and key rotation - each is simply one of the incidents above, inverted into a check. None needed a novel detector; they needed someone watching continuously.

If you are issuing, curating, or allocating into an RWA protocol and want the junction reviewed - not just the code snapshotted - that is the conversation we want to have.
  • Who is MixBytes?
    MixBytes is a team of expert blockchain auditors and security researchers specializing in providing comprehensive smart contract audits and technical advisory services for EVM-compatible and Substrate-based projects. Join us on X to stay up-to-date with the latest industry trends and insights.
  • Disclaimer
    The information contained in this Website is for educational and informational purposes only and shall not be understood or construed as financial or investment advice.
Other posts