News Security Research
Categories
Launch App
News Security Developers

Reentrancy in 2026: Why the Oldest Exploit in DeFi Is Still Winning

Published on March 11, 2026

Reentrancy in 2026: Why the Oldest Exploit in DeFi Is Still Winning

On March 6, 2026, an attacker drained approximately $2.7 million from a Solv Protocol structured yield vault. The mechanism was a reentrancy exploit. The protocol is backed by Binance Labs, Blockchain Capital, and OKX Ventures. It claims over $1.7 billion in on-chain Bitcoin reserves. It was actively working with Hypernative Labs, SlowMist, and CertiK at the time of the attack.

None of that prevented a vulnerability class first documented in 2016 from executing cleanly, 22 times in succession, before detection.


What Happened

Solv Protocol operates an on-chain Bitcoin reserve. Users deposit BTC in exchange for SolvBTC — a wrapped asset deployable across lending, borrowing, and staking strategies on other chains. The protocol also offers structured yield products called Bitcoin Reserve Offerings (BRO), each governed by a dedicated vault contract.

The exploited contract was the BitcoinReserveOffering (BRO) vault. When a user mints BRO by depositing an ERC-3525 NFT, the contract’s doSafeTransferIn function triggers the onERC721Received receiver callback — a mandatory behavior of the ERC-721 standard on which ERC-3525 is built. The flaw: that callback also triggered an additional mint before the first mint had completed and the internal balance had been updated.

The result was a double-minting condition. The attacker entered the mint function, received tokens, re-entered through the callback before the balance update was recorded, received tokens again — and repeated this cycle 22 times. Starting with 135 BRO tokens, the attacker inflated their position to approximately 567 million BRO, then converted those tokens into 38.05 SolvBTC — worth roughly $2.7 million at the time of the attack.

Solv confirmed fewer than 10 users were affected, that the exploit was limited to a single vault, and that all other vaults and user funds remained secure. The protocol pledged full compensation and offered the attacker a 10% white hat bounty in exchange for the return of the remaining funds. No response had been recorded at the time of publication.


The Exploit Class Is Not New

Reentrancy is not an emerging threat. It is not a novel variant that emerged from recent changes in EVM behavior or token standards. It is the same fundamental vulnerability that caused the 2016 DAO hack — a $60 million loss at the time, and the event that necessitated the Ethereum hard fork that split the chain into ETH and ETC.

The mechanics are identical: a contract calls an external address before updating its internal state. The external address calls back into the original contract. The original contract, having not yet recorded the first interaction, treats the second call as legitimate. Balances are manipulated before the accounting can catch up.

The Checks-Effects-Interactions (CEI) pattern was established as the direct countermeasure: validate conditions first (Checks), update internal state before any external call (Effects), then execute the external interaction (Interactions). Applied consistently, CEI closes the reentrancy attack surface entirely.

The Solv exploit illustrates why CEI compliance is not always straightforward. The ERC-3525 standard is built on ERC-721, which mandates the receiver callback during safe transfers. The reentrancy vector was not an obvious oversight — it was embedded in the interaction between two token standards, where the callback behavior of one created reentry conditions in the other. This is the category of vulnerability that Halborn researchers noted can be difficult to identify because it does not always manifest as a simple pattern-match against known reentrancy signatures.

The difficulty of detection does not change the architectural lesson. It reinforces it.


Three Security Firms. One Vault. Twenty-Two Executions.

The detail that demands examination is not the technical mechanism of the exploit. It is the operational context in which it occurred.

Solv Protocol is not an unaudited project launched by anonymous developers. It holds backing from firms that conduct rigorous due diligence as a condition of investment. It was actively engaged with three specialized blockchain security providers at the time the attack occurred. Its total reserves exceeded $1.7 billion — a scale that typically commands proportional security investment.

And yet the exploiter ran the same transaction 22 times before the position was drained.

Decurity’s automated monitoring bot was the detection mechanism that surfaced the incident. Monitoring identified the attack after it had already completed. The security engagement did not prevent the vulnerability from existing in the deployed contract; it documented the exploitation of that vulnerability once it was underway.

This is the operational reality of upgradeable protocol security: audits assess contracts at a point in time. New vault contracts, new integrations, new token standard interactions introduce new surface area after the audit scope closes. The coverage gap between the last audit and the next deployment is the window through which exploits enter.


Security Is Architecture, Not Maintenance

The standard response to incidents like this is a post-mortem, an enhanced audit scope, and improved pre-deployment review procedures. Solv has committed to exactly this — an investigation in partnership with Hypernative Labs, SlowMist, and CertiK, with strengthened contracts to follow.

These are necessary responses. They are not architectural solutions.

The reentrancy problem is a decade old. The countermeasure is well-documented. The reason protocols continue to be exploited through reentrancy is not that developers are unaware of CEI or that security firms are failing to test for known patterns. It is that complex systems — particularly those integrating multiple token standards, callback mechanisms, and composable vault architectures — create interaction surfaces where reentrancy conditions can emerge in non-obvious ways. And because those systems are upgradeable, new surfaces are continuously introduced.

Every new vault contract is a new audit scope. Every new token standard integration is a new callback chain to trace. Every governance proposal that deploys updated logic is a new opportunity for a subtle interaction to create a reentry condition that did not exist in the previous deployment.

A contract that cannot be modified after deployment does not face this maintenance cycle. The CEI compliance — or non-compliance — of an immutable contract is fixed at the moment of deployment. It can be verified once, definitively, against a static codebase. It cannot be degraded by a subsequent upgrade, a new vault integration, or an interaction with a token standard that did not exist at deployment.

This is not a claim that immutable contracts are immune to reentrancy. An immutable contract with a reentrancy flaw in its original deployment carries that flaw permanently — that is the genuine cost of immutability, and it has to be acknowledged. The claim is more precise: an immutable contract with correct CEI implementation at deployment cannot subsequently have that implementation broken by an upgrade, a new integration, or a governance-approved contract modification.

Security is established at the architecture level and maintained by the absence of change. The alternative — correct implementation today, maintained through perpetual audit cycles against an evolving codebase — is the model that just failed, in a protocol with three active security firm engagements, for the 22nd consecutive transaction before anyone intervened.


What 0xKeep’s Architecture Means Here

The 0xKeep V11 contract does not accept ERC-3525 or ERC-721 token deposits. It does not implement vault structures with external callback chains. Its interaction model is simpler by design: a user locks tokens, the contract records the position, the position becomes withdrawable at a deterministic future date. There are no BRO-style yield structures, no mint functions triggered by NFT transfers, no callback mechanisms that could create reentry conditions.

This is not an accident. Minimizing the external interaction surface of an immutable contract is a direct consequence of knowing that any interaction complexity introduced at deployment is permanent. The design constraint imposed by immutability is also a security property: you cannot ship a complex callback architecture into an immutable contract and plan to patch the edge cases later, because there is no later.

The 0xKeep V11 contract implements reentrancy protection through two independent layers, both fixed at deployment. The first is OpenZeppelin’s ReentrancyGuard, inherited at the contract level — every single state-modifying function (lockToken, withdrawLock, createVesting, claimVesting, transferLockOwnership, transferVestingOwnership) carries the nonReentrant modifier. No state-modifying entry point is unguarded.

The second is strict CEI ordering within each function. In withdrawLock, lock.withdrawn is set to true and lock.amount is zeroed before the safeTransfer executes — state is fully updated before any external call is made. In claimVesting, vest.claimedAmount is incremented before the token transfer. The external interaction is always last.

Neither of these layers can be removed, weakened, or modified. They are not audit checkpoints or deployment configurations. They are bytecode. The contract that executes in 2030 is the contract that was verified at deployment. That permanence is the feature.


The Pattern

February 2026 brought the Moonwell oracle misconfiguration: $1.78 million lost through a governance-executed contract update. The Solv exploit brings March’s opening incident: $2.7 million lost through a reentrancy condition in a newly deployed vault contract. Both incidents trace to the same underlying condition — a protocol whose security posture changes with each deployment, and where the gap between the last review and the current live state is the operative attack surface.

DeFi security losses across January and February 2026 totaled approximately $112.5 million across 31 incidents. The Solv exploit adds to a March that is already recording losses through a Curve Finance oracle vulnerability earlier in the same week.

The data pattern is consistent. The architectural implication is consistent. Protocols that can be modified will continue to be exploited through the conditions introduced by their modifications. The reentrancy attack that drained $60 million in 2016 is still viable in 2026 — not because the industry has failed to learn from it, but because upgradeable systems continuously reintroduce the surface area that careful initial implementations worked to eliminate.

Write the contract correctly. Make it immutable. Stop creating new attack surfaces to audit.


0xKeep operates on an immutable, zero-admin-key architecture. No wallet — including those controlled by the 0xKeep team — can pause, modify, or interact with deployed contracts. Time is the only admin.

Deploy on Base, Arbitrum, or Optimism at 0x-keep.xyz Follow protocol updates: @0xKeep_official

Back to Home