Share on XShare on LinkedInShare on Telegram
Hack Analysis

Solv Protocol $2.5M Exploit: Double Mint Bug (Explained)

A breakdown of the Solv Protocol $2.5M exploit caused by a double-mint vulnerability involving onERC721Received() and mint() in ERC721 contracts.

Author
QuillAudits Team
March 6, 2026
Solv Protocol $2.5M Exploit: Double Mint Bug (Explained)
Share on XShare on LinkedInShare on Telegram

The Solv Protocol exploit resulted in approximately $2.5M in losses, caused by a logic flaw in the BitcoinReserveOffering contract that enabled double minting of BRO tokens. The issue arose from the interaction between the NFT transfer process and the onERC721Received callback during the mint flow. By triggering minting inside the callback and again when execution returned to the mint() function, the attacker created unbacked BRO tokens. Repeating this process within a single transaction allowed the attacker to massively inflate tokens and later convert part of them into 1211 ETH.
 

Hack Analysis

The attacker initially started with 135 BRO tokens. These tokens were burned through the reserve contract, and based on the exchange rate at that time, the attacker received 0.000031102085070226 GOEFS tokens in return.

burn tx.png

burn exchange.png

The attacker then executed aminttransaction by sending those GOEFS tokens along with NFT ID 4932. This NFT transfer triggered theonERC721Receivedcallback, which internally called the_mintfunction and minted BRO tokens according to the current exchange rate.

mint tx.png

After the callback finished, execution returned to themint()function, which again called the_mintfunction using the same exchange rate, resulting in another set of BRO tokens being minted for the attacker.

mint exchange rate.png

Atacker repeated this process 22 times and since the entire exploit occurred within a single transaction, the exchange rate remained constant throughout the process. This allowed the attacker to repeatedly perform the loop, effectively doubling the initial BRO tokens with each iteration.

double.png

In the end, the attacker accumulated 567M BRO tokens. Out of these, 165M BRO were converted into 1211 ETH by first swapping BRO to SolvBTC through the BRO - SolvBTC exchange, and then swapping the assets on Uniswap V3.

exchange.png

The diagram below summarizes the exploit flow, from the initial burn of BRO tokens and mint interaction with the NFT callback, to the double minting bug that allowed the attacker to inflate tokens and ultimately extract ETH through on-chain swaps.

Screenshot 2026-03-06 at 4.36.50 PM.png

Root Cause

In BitcoinReserveOffering.sol, when the mint function is called, the contract first transfers an NFT from the user’s account. During this transfer, the onERC721Received() callback is triggered. Inside this callback, tokens are minted for the user.

However, after the callback execution completes and the program counter returns to the mint function, the contract mints the tokens again for the same user. This results in double minting.

Screenshot 2026-03-06 at 11.46.21 AM.png

Screenshot 2026-03-06 at 11.46.29 AM.png

The attacker exploited this behavior by minting tokens through the callback and then receiving another mint when execution returned to the mint function. Later, when the attacker called the burnfunction, the protocol exchanged the inflated tokens and returned assets back to the attacker.

Screenshot 2026-03-06 at 11.46.41 AM.png

By repeatedly performing this loop 22 times, the attacker turned 135 BRO tokens into 567M BRO tokens, ultimately extracting 1211 ETH in profit.

Screenshot 2026-03-06 at 3.36.15 PM.png

Screenshot 2026-03-06 at 12.00.35 PM.png

Prevent Logic Flaws Before Attackers Find Them

The Solv Protocol exploit shows how small logic flaws can lead to major token inflation. QuillAudits helps identify such vulnerabilities early and keep your smart contracts secure.

Funds Flow After Attack

The attacker converted 135 BRO tokens into approximately 567M BRO tokens through this exploit. Out of these, 165M BRO were swapped to SolvBTC, which were then converted to WBTC, subsequently to WETH, and then to ETH through the BRO–SolvBTC Exchange and Uniswap V3. The remaining ~402M BRO tokens are still held in the attacker’s EOA (0xa407fe273db74184898cb56d2cb685615e1c0d6e).

Screenshot 2026-03-06 at 2.32.48 PM.png

The remaining 1211 ETH extracted from the exploit were transferred to other attacker-controlled EOAs and subsequently deposited into the RailGun protocol, a privacy protocol similar to Tornado Cash.

Screenshot 2026-03-06 at 2.46.17 PM.pngScreenshot 2026-03-06 at 2.51.52 PM.pngScreenshot 2026-03-06 at 2.52.28 PM.png

Post Attack Mitigation

Solv Protocol acknowledged the exploit, assured users that funds are safe, stated they will cover the losses of affected users, and offered the attacker a 10% white-hat bounty in exchange for returning the funds while the investigation continues.

Relevant Address and Transactions

Attacker EOAs:

RailGun Deposit Transactions:

Attack Transaction: 0x44e637c7d85190d376a52d89ca75f2d208089bb02b7c4708ad2aaae3a97a958d
 

Victim Contract: 0x014e6F6ba7a9f4C9a51a0Aa3189B5c0a21006869
 

BRO Token: 0x014e6F6ba7a9f4C9a51a0Aa3189B5c0a21006869
 

BRO - Solv BTC Exchange: 0x1E6101728fD9920465dfA1562c5e371850103da2
 

Conclusion

The Solv Protocol exploit highlights how subtle callback interactions can introduce critical logic flaws in smart contracts. A missing guard against double minting allowed the attacker to inflate tokens within a single transaction. This incident reinforces the importance of carefully handling external calls, callbacks, and state updates in DeFi protocols.

Contents

Tell Us About Your Project
Subscribe to Newsletter
hashing bits image
Loading...
cta-bg

WE SECURE EVERYTHING YOU BUILD.

From day-zero risk mapping to exchange-ready audits — QuillAudits helps projects grow with confidence. Smart contracts, dApps, infrastructure, compliance — secured end-to-end.

QuillAudits Logo


DeFi SecurityplumeUniswap FoundationAethiropt-collectivePolygon SPNBNB Chain Kickstart

All Rights Reserved. © 2026. QuillAudits - LLC