
March 23, 2026

On March 22, 2026, the Resolv protocol was exploited in an attack that enabled the creation of 80 million USR without any real backing. With roughly 300,000 USDC, an attacker walked away with nearly $25 million. But the real lesson of this incident is not the vulnerability itself, but what amplified it and the identity of the actors who should have prevented it. A closer look at what the Resolv incident reveals about the responsibilities of curators in on-chain finance.
Update from March 24: Following the publication of this analysis, we continued our investigation and received new information: #1 Update from Resolv on the situation, #2 Correction regarding the attack vector (Public Allocator → Donation Attack). We would like to thank 9Summits for their assistance with this research.
Resolv is an on-chain finance protocol positioning itself as a “financial layer for stablecoin yield.” Its main product is USR, a synthetic dollar backed by crypto assets (ETH, stETH, BTC), designed to generate yield through financial instruments such as delta-neutral strategies.
The protocol relies on a two-tranche structure. USR is the senior tranche, intended to be stable, overcollateralized, and focused on capital preservation. RLP is the junior tranche, a leveraged product that absorbs the residual risks of USR in exchange for higher yield. In the event of losses at the protocol level, RLP is the first to absorb them.
On the eve of the incident, Resolv had a supply of approximately 102 million USR and around $141 million in TVL.
The minting of USR occurs in two steps. User deposits in USDC are processed through a function called requestSwap(). An address holding the SERVICE_ROLE then finalizes the operation via completeSwap(), determining the amount of USR to be minted.
The core issue lies in the very design of Resolv: the completeSwap() function includes no on-chain verification of the ratio between deposited funds and minted tokens. This decision is made entirely off-chain.
The smart contract only verifies that the caller holds the SERVICE_ROLE and that the minted amount is above the user-defined minimum. In other words, if the SERVICE_ROLE holder decides to mint 50 million USR against 100,000 USDC, the contract executes without question.
What happened on March 22, 2026, is that an individual managed to compromise the private key associated with the SERVICE_ROLE, hosted in an AWS KMS environment. From that point on, they had full control over the account, without any restrictions. As we will see, this was not a multisig, but a standard EOA (Externally Owned Account), like the ones most users rely on daily.
The attacker submitted three requestSwap() transactions, each depositing 100,000 USDC. For the first, they called completeSwap() with a target of 50 million USR. For the last, 30 million USR. The second request (id=31) belonged to a regular user, who received a normal mint of around 100,000 USR-revealing selective manipulation by the attacker.
In total, 300,000 USDC was deposited to mint 80 million USR out of thin air, implying an absurd 266:1 ratio.
The uncollateralized USR was then methodically converted into “real” assets. The attacker deposited USR into the Curve USR/USDC pool, causing the price to collapse from $1 to below $0.025 at its lowest point. USDC was then swapped for ETH via Uniswap V4 and MetaMask Swaps. The attacker also swapped wstUSR for USDC via KyberSwapthrough Fluid.
In the end, the attacker extracted approximately 11,400 ETH, worth around $24 million at current prices. Around 36 million USR are still held by the attacker, with an estimated value of $2 million.
Resolv Labs managed to pause the protocol roughly three hours after the incident began. Surprisingly, this delay is partly explained by the time required to gather four multisig signatures to execute the emergency shutdown, while the USR minting function required only a single key.
The SERVICE_ROLE had unlimited minting power over a protocol managing $141 million. It was controlled by a single EOA, meaning one private key-like those used by everyday users.
The paradox is striking. The pause function required a 4/4 multisig. The mint function depended on a single key. Resolv had stronger safeguards to stop the protocol than to control its ability to create money.
One of the most surprising aspects of the exploit is that the attacker was able to mint tens of millions of USR in a single transaction. No mint cap existed. A basic safeguard could have limited minting to a percentage of total supply or introduced time delays between large operations. None existed.
There was also no on-chain ratio check. The contract did not compare deposited value to minted value. A simple rule capping minting relative to deposits would have made this attack impossible at scale.
No sanity-check oracle was implemented. Integrating a price oracle into the minting logic could have detected inconsistencies with market value.
Resolv’s code had been audited 18 times without any vulnerability being identified. Yet about a year earlier, a cybersecurity researcher had flagged this exact attack vector related to the SERVICE_ROLE. The report was dismissed as out of scope, as it assumed compromise of a privileged role.
This highlights a broader issue: admin key compromise is often excluded from audit scopes under the assumption of trust. Resolv shows why this assumption is flawed. Private keys can be compromised, and human factors remain the weakest link.
On-chain safeguards are not about distrust. They are about acknowledging that human trust is not a substitute for system robustness.
To understand how the losses were amplified, it is necessary to explain how Morpho works. The protocol operates on a logic of isolated markets: each market is a unique pair, one collateral asset and one borrowable asset. This isolation between markets is an important security property, designed to prevent risk from spreading across the protocol.
Above these markets operate vaults managed by curators, who distribute capital across multiple markets to optimize depositors' yield. Under normal conditions, this is a solid architecture. Under crisis conditions, it harbors a little-known vulnerability that the attacker had perfectly identified and exploited.
At the time USR was collapsing to $0.025 on secondary markets, Morpho vaults containing USR or wstUSR as collateral continued to value it at $1. The price of USR was not fetched via an external oracle but was hardcoded to 1 USDC.
In practice, this meant that any user could deposit USR as collateral and borrow USDC against a fictitious value: 1,000 USR (worth $25 at the low) could theoretically be used to borrow $500 USDC, with the operation repeatable until no liquidity remained.
It also meant there was no real-time price update mechanism and no circuit-breaker capable of suspending markets in the event of a significant divergence between the oracle price and the market price. This precise configuration is what made everything that followed possible.
Around 2:20 AM UTC, as soon as curators became aware of the Resolv exploit, virtually all of them responded the same way: setting the supply caps of USR markets to zero on their vaults, blocking any new capital inflow toward those markets. In theory, this was the right response. In practice, it was not enough and Morpho knew it.
Morpho's official documentation for Vaults V1 describes a vulnerability in versions 1.0 and 1.1: when a market uses an oracle whose price is significantly above the real market price (i.e. the situation with USR), it is possible to increase the number of shares held by a vault in that market via a "donation," thereby inflicting losses on the vault.

What makes this even more striking is that the warning is stated in plain terms in Morpho's own documentation: "Supply caps at zero will not prevent losses." This guidance was apparently not properly communicated to curators, since setting caps to zero was precisely the defensive move they all made, believing their vaults were safe.
To understand why this fails, two levels of control must be distinguished. Supply caps and the allocation queue govern what the vault itself decides to allocate through its own internal logic. But Morpho's supply() function accepts an onBehalf parameter: anyone can call it while designating a vault's address as the beneficiary of the deposit, thereby crediting market shares to that vault without it having requested or authorized anything.
The scale of damage this attack can cause depends on the ratio of shares the attacker holds in the targeted vault's total supply. The larger the attacker's fraction of the vault's shares, the more they can extract. This is where the flash loan comes in: it allows the attacker to temporarily acquire a dominant share of the vault's supply, execute the attack, and then repay the flash loan.
Back to the Resolv case. The market targeted by the attacker is the wstUSR/USDC market on Morpho. It is the only place where the attacker can deposit their depreciated wstUSR as collateral and borrow USDC against it, since the oracle still values USR at $1 there. The problem: this market is illiquid to begin with. There are not enough USDC available to borrow for the operation to be profitable at scale.
This is where the Donation Attack comes in. The attacker likely first took a USDC flash loan directly from Morpho, then by calling supply(onBehalf=vault_address), forced vaults holding USDC and listing the wstUSR/USDC market in their WithdrawalQueue to increase their exposure to that market against their will.
These vaults end up holding shares in the wstUSR/USDC market without having decided to, which injects USDC liquidity into it. The larger the attacker's share of the targeted vault's supply at the time of the operation, the more liquidity they can force into the market. This is why the flash loan is used to temporarily acquire that dominant position.
Once the liquidity has been force-injected into the wstUSR/USDC market, the attacker deposits their wstUSR fictitiously valued at $1 as collateral, borrows the freshly available USDC, repays the flash loan, and walks away with the difference.
The elegance of this attack lies in the fact that setting supply caps to zero changes nothing: caps control what the vault allocates through its own internal logic, but not what is forced onto it from the outside via supply(onBehalf=vault_address). This is exactly what Morpho's documentation warns against.
9summits precisely documents the moment this attack was executed against its vault: at 12:33 PM UTC, a series of 32 transactions bypassed its defenses. Its residual bad debt was limited to $41,000 thanks to its early intervention at 3:00 AM UTC. Re7 Labs, which had detected the exploit as early as 2:46 AM UTC and alerted its partners in real time, also sustained isolated losses on two markets. Gauntlet, with a slower response, accounts for 96% of total losses.
One of the recurring paradoxes of DeFi is that it claims to eliminate intermediaries, echoing one of the ecosystem’s founding principles. This is obviously a false promise, because eliminating trust entirely is impossible. The real innovation of DeFi lies not in removing trust, but in transforming it.
Curators are the clearest example of this shift, yet remain largely invisible to the general public. In theory, their role is to do what users cannot: analyze markets, select exposures, calibrate risk, monitor anomalies, and above all, protect capital when conditions deviate from the expected scenario. In other words, they do not just sell yield. They sell trust.
This is precisely why we wrote in 2025 that curators had become the new guardians of trust in on-chain finance. Not because they hold funds directly, but because they shape exposure, decide which markets are acceptable, and act as a filter between protocol complexity and end users.
The implicit promise is simple: you delegate part of the selection and monitoring process to us, in exchange for better risk management. The Resolv incident is a real-world stress test of that promise, under the worst possible conditions.
Steakhouse Financial is one of the leading actors in DeFi risk management and curation. Recently appointed as Resolv’s official risk manager, Steakhouse published a detailed assessment of the protocol just five days before the hack.
The report covered the USR/RLP structure, delta-neutral mechanics, and crisis management systems. Its conclusion: Resolv “demonstrates institutional-grade rigor,” is “designed to handle crisis scenarios through automated mechanisms,” and uses “battle-tested components in its mint and redemption logic.”
This report influenced allocation decisions from other curators, who relied on it to justify exposure to Resolv markets. Yet Steakhouse itself had no direct exposure to USR.
A risk assessment that influences others’ exposure while exempting its own author raises questions of consistency. More importantly, does a report validating operational rigor just days before a hack meet the standard expected from a risk manager?
Curators have already been criticized for problematic behaviors over recent months. The Resolv incident reinforces that these concerns were valid.
At its core, the curator model embeds a structural tension between yield, capital growth, and prudence. Curators attract capital by offering competitive yields, strong branding, and perceived superior allocation.
However, competition pushes them toward higher-yield opportunities, which are often more complex, newer, or more fragile.
As long as markets are stable, the model appears virtuous. Deposits grow, curator revenues increase, and protocols benefit from higher TVL and activity. But this dynamic also creates a gradual drift, where risk becomes secondary to maintaining competitiveness.
This is exacerbated by user behavior. Most users do not audit protocols, oracle design, admin roles, or emergency mechanisms (which, in theory, fall under curator responsibility). Instead, they choose recognizable assets and attractive APYs.
Curators therefore benefit from a significant transfer of trust, often disproportionate to the actual level of due diligence performed.
The Resolv episode makes one thing clear: the curator role can no longer be limited to initial screening and publishing a risk thesis. That is no longer sufficient. Greater transparency must also be required and provided, at least for users.
On-chain finance is professionalizing, and rightly so. But the key actors in this ecosystem must now rise to the same standard if we ever want to move beyond our current microcosm and onboard the much-discussed billion users.
Starting with curators, whose responsibilities are clear:
The collapse of USR was not limited to Resolv. Because USR and its derivatives were widely used as collateral, the depeg triggered cascading effects.
The Resolv incident is not just about a hack or a compromised private key. It is about intermediaries of trust failing to act at a critical moment. As we wrote over a year ago, DeFi has not eliminated intermediaries, it has transformed them.
Curators are these new intermediaries. But this incident highlights a gap between promise and reality. The promise of experts managing risk on behalf of users collided with the reality of automated systems feeding collapsing markets for hours without intervention.
The implications go far beyond Resolv. What is at stake is the credibility of on-chain finance itself. At OAK Research, we believe the future of the industry will depend on the ability to generate attractive yield on reliable and secure assets. This will require multiple layers of actors: issuers, liquidity providers, distributors, yield managers, curators, and more.
Curators occupy a central role in this architecture. They connect end users to an increasingly complex system. They transform layers of technical risk into products presented as simple.
This is precisely why, if they fail to evolve, on-chain finance will remain a playground for risk-tolerant users rather than a foundation for broader adoption.
Concretely, this means higher due diligence standards, real-time monitoring systems, built-in circuit-breakers, greater transparency in risk methodologies, and potentially, over time, direct economic accountability when negligence occurs.