CryptoReal
CASE FILE — Mar 4, 2021

Vault Upgrade Backdoor Drains Meerkat Finance of $31M One Day After BSC Launch

Binance Smart Chain recorded its first large-scale exploit on March 4, 2021, when the yield project Meerkat Finance was drained of roughly 13 million BUSD and about 73,000 BNB — a combined loss of close to $31 million — barely 24 hours after launch. The incident immediately pushed Meerkat Finance to third place on rekt's running leaderboard of DeFi losses.

BSC had spent the preceding months replicating Ethereum's DeFi playbook at speed, forking established protocols and rapidly accumulating deposits. Observers of the chain noted that this trajectory — rapid growth built on copied code — was heading toward exactly this kind of outcome once enough capital had piled up.

How the funds were taken

The exploit centered on two upgradeable vaults, one holding BUSD and one holding WBNB. Both used OpenZeppelin's Transparent Proxy pattern, which lets an authorized deployer redirect a proxy's logic to a new implementation contract via upgradeTo(address newImplementation). The vaults' original implementations sat at unremarkable, verified addresses: the BUSD Vault's prior logic and the WBNB Vault's prior logic.

The Meerkat Finance Deployer account itself executed two upgrade calls: one at block 5,381,239, pointing the WBNB Vault to a new implementation, and a second at block 5,381,246, pointing the BUSD Vault to a new implementation.

These new implementations added two functions absent from the original code. The first, init(address owner), simply wrote a supplied address into storage slot 0 — with no access control restricting who could call it. According to those tracking the transaction, an attacker address invoked this permissionless initializer through the vault proxies, effectively self-appointing as the vault's owner. The second function, identified only by its selector 0x70fcb0a7(address _param1), took a token address as its sole argument. Because the vaults' source code was not published, analysis relied on decompiled bytecode, which showed the function checking that the caller matched the address stored in slot 0, then transferring out that token's full balanceOf() held by the vault to the caller. Neither function existed in the vaults' original code, and the replacement implementation's bytecode was only about a quarter the size of what it replaced.

Standard practice for vault architectures that include an emergency-withdrawal path — as used by projects like yearn — is to restrict any owner-triggered fund recovery to assets not actively deployed in the strategy, precisely so a compromised or malicious deployer can't simply walk off with user deposits. Meerkat Finance's replacement contracts contained no such safeguard.

Sums referenced in this case file

Given that the upgrade calls originated from the Meerkat Finance Deployer address itself, the most plausible explanation is a deliberate rug pull rather than an external hack, though a compromised deployer private key remains a small possibility.

Timeline of the attack (all times UTC, March 4, 2021)

  • 08:53:10 — Meerkat Finance Deployer upgrades the WBNB Vault to the new implementation contract (0x9d3a4c3acee56dce2392fb75dd274a249aee7d57)
  • 08:53:31 — Meerkat Finance Deployer upgrades the BUSD Vault to the new implementation contract (0xb2603fc47331e3500eaf053bd7a971b57e613d36)
  • 08:54:31 — Attacker calls 0x70fcb0a7 on the BUSD Vault, withdrawing 13,968,039 BUSD
  • 08:54:55 — Attacker calls 0x70fcb0a7 on the WBNB Vault, withdrawing 73,635 WBNB

Following the withdrawals, the stolen funds were split across multiple addresses, with a portion reportedly routed toward addresses associated with the Binance Bridge. The Binance.org Bridge was subsequently suspended, which would have the effect of making it harder to move the funds off-chain to other networks — though it is unclear whether that was the intended purpose.

Project response and chain-level fallout

Meerkat Finance's team initially described the incident as a hack before deleting the project's social media accounts, leaving affected users uncertain whether to direct blame at the protocol or at Binance Smart Chain itself. Around the same time, Binance was reported to have closed cross-chain bridges, and the block explorer bscscan.com briefly went offline — attributed by some to a surge in traffic, though the timing invited speculation.

The episode reignited a long-standing question about BSC's centralized architecture: whether Binance and CZ would intervene to reverse the chain, echoing past discussion of Binance considering a rollback after an earlier $40 million exchange hack. In BSC's case, any such reversal would require cooperation among the network's 21 validators, who could in theory coordinate a refund but were seen as unlikely to do so, given the legal and CeDeFi complications it would create. Community members in the project's Telegram group were themselves split on how they wanted Binance to respond.

Meerkat Finance was not BSC's first multimillion-dollar rug pull — an earlier one had already occurred — but it was the first since PancakeSwap's rise had drawn a much larger user base to the chain. Absent an unlikely voluntary gesture from Binance to organize a reimbursement mechanism, the funds are considered lost, underscoring that BSC's forked, faster, cheaper infrastructure carried the same underlying security risks as the Ethereum protocols it copied.

(With thanks to 0xdeadf4ce for the on-chain analysis.)

BSCMeerkat
Investigation alerts

Get new scam files the moment we publish them — usually 2–3 emails a week.

Enter a valid email address.

No spam, unsubscribe anytime. We never sell your data. Crypto assets are volatile and high-risk; nothing here is financial advice.

You're on the list. Watch your inbox for the next scam file.