CheapbookZ

Market Prices

Coin Price 24h
BTC Bitcoin
$81,327.6 -0.57%
ETH Ethereum
$2,392.29 -1.31%
SOL Solana
$102.92 -1.46%
BNB BNB Chain
$715.8 -0.91%
XRP XRP Ledger
$1.29 -1.41%
DOGE Dogecoin
$0.0790 -2.33%
ADA Cardano
$0.2186 -3.27%
AVAX Avalanche
$9.73 -2.55%
DOT Polkadot
$1.11 -4.26%
LINK Chainlink
$11.95 -3.23%

Fear & Greed

55

Greed

Market Sentiment

Event Calendar

{{年份}}
30
04
upgrade Celestia Mainnet Upgrade

Improves data availability sampling efficiency

15
04
halving Bitcoin Halving

Block reward reduced to 3.125 BTC

22
03
unlock Optimism Unlock

Circulating supply increases by about 2%

10
05
upgrade Ethereum Pectra Upgrade

Raises validator limit and account abstraction

12
05
halving BCH Halving

Block reward halving event

18
03
unlock Sui Token Unlock

Team and early investor shares released

08
04
upgrade Solana Firedancer

Independent validator client goes live on mainnet

28
03
unlock Arbitrum Token Unlock

92 million ARB released

Altseason Index

41

Bitcoin Season

BTC Dominance Altseason

Gas Tracker

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Market Cap

All →
1
Bitcoin
BTC
$81,327.6
1
Ethereum
ETH
$2,392.29
1
Solana
SOL
$102.92
1
BNB Chain
BNB
$715.8
1
XRP Ledger
XRP
$1.29
1
Dogecoin
DOGE
$0.0790
1
Cardano
ADA
$0.2186
1
Avalanche
AVAX
$9.73
1
Polkadot
DOT
$1.11
1
Chainlink
LINK
$11.95

🐋 Whale Tracker

🔵
0x7641...f9e5
6h ago
Stake
3,257.64 BTC
🔴
0x6a0c...7891
12m ago
Out
757,685 USDT
🔴
0x5352...4992
5m ago
Out
2,434,320 USDT

💡 Smart Money

0xff3d...0698
Arbitrage Bot
+$4.7M
82%
0x5e66...2400
Experienced On-chain Trader
+$0.9M
71%
0x5f0d...f97c
Top DeFi Miner
+$3.8M
90%

🧮 Tools

All →
Altcoins

The Approval You Forgot: Inside Magic Eden's $5.7 Million Legacy Exposure

SignalSignal

The most dangerous transaction in this week's Magic Eden security incident was authorized years ago, by someone who has almost certainly forgotten it happened.

There was no phishing link. No fake airdrop. No compromised seed phrase. No drainer contract dressed up as a revocation tool. Whoever moved those assets simply reached into a contract Magic Eden stopped using and pulled value out through an approval that was still sitting there — live, on-chain, permanently valid, waiting for anyone patient enough to look.

Twenty-three thousand, one hundred and fifty-five NFTs were transferred before the worst version of this story could finish. At current marks, roughly $5.7 million. That figure is the part everyone is quoting. The part worth quoting is colder: not one of those transfers required the owner's consent this week. It required only the consent they gave in 2023, on a screen most of them will never open again.

We audited the silence between the lines of code, and the silence was the entire incident.

Why a marketplace that closed still had teeth

Magic Eden did not become a multi-chain marketplace by being timid. It got there by chasing liquidity onto every chain that had any, and by saying yes to royalty-enforcement rails that other marketplaces were quietly abandoning. In the 2022 and 2023 royalty wars, that meant partnering with infrastructure that could force creator payments at the contract level rather than the interface level.

That infrastructure was Limit Break's Payment Processor V2 — a contract whose entire job was to sit between a buyer, a seller, and a collection, and execute the asset transfer while making sure the royalty got skimmed off the top. It is a perfectly reasonable design. It is also, structurally, a single address that thousands of wallets granted permission to move their assets.

If you are new to this: on Ethereum and its cousins, an NFT does not live inside your wallet. Your wallet holds a pointer, and the token contract holds a ledger that says who owns what. To let a marketplace move your token, you call a function called approve (or setApprovalForAll), which writes a line into that ledger granting a specific address the right to transfer your asset later. There is no clock on that line. It does not decay. There is no "expires in 30 days" field. It sits there until someone explicitly overwrites it.

Magic Eden shut down its old EVM marketplace front end. The processor was retired from active use. Users moved on. Nobody revoked anything, because nobody told them to, and because revocation is an invisible chore that produces no dopamine.

Then, this week, a vulnerability surfaced inside that processor contract. Not in Magic Eden's live marketplace. Inside the payment processor itself. And the ledger, which had been quietly holding thousands of standing permissions for a year or more, became a loaded weapon.

The mechanism, precisely

Here is the part that separates this incident from the usual NFT theft story, and it is worth being pedantic about.

In a conventional drain, the victim is an active participant. They sign something — a permit, a setApprovalForAll to an unknown address, a signature that looks like a login — and the attacker spends it immediately. The crime is a conversation. The victim is talked into it.

This was not a conversation. This was the reuse of a permission that already existed. The attacker did not need to persuade anyone of anything. They needed the approval to still be valid, and the contract to still be callable in a way that let them direct a transfer. Both conditions were met, and had been met continuously, for months, without anyone needing to do anything at all.

That is the definition of a legacy exposure: a vulnerability that does not lie dormant because it is hard to exploit, but because nobody has bothered to exploit it yet.

And the callable surface is not narrow. Researchers identified paths that exposed hundreds of wrapped ETH — WETH — alongside NFTs. That single detail drags the incident out of the NFT lane and into general EVM risk territory. WETH is not a collectible. It is a fungible ERC-20 that sits in the same wallets as everything else, and the same approve primitive governs it. If a processor can move an NFT through an outdated permission, the question of whether it can move a fungible token through the related permission is not academic. It is arithmetic.

The exposure also spans three networks — Ethereum, Polygon, and Base. Same class of contract, same user habit, three separate ledgers each holding their own copy of the mistake.

Why the rescue is the exploit, mirrored

Now the part that most coverage is treating as the happy ending, when it is actually the most structurally revealing detail in the entire event.

White hats moved 23,155 NFTs into safe custody before the attacker could complete a larger sweep. That is a genuine win, and the people who did it deserve the credit. But think about what their success proves.

It proves that the transfer path could be invoked by a third party who did not own the assets, did not hold the private keys, did not need a signature from anyone, and did not need to interact with the victim at all. The only thing that distinguished the rescuer from the thief was intent and timing.

A mechanism that can be raced is a mechanism that is open to everyone. There is no whitelist on a valid approval. The contract does not know whether the caller is a security researcher, a state actor, or a teenager with a forked block explorer. It knows only that an allowance exists and the caller is spending it.

The rescue, in other words, was not a patch. It was a sprint. And you cannot sprint forever.

I have seen this shape before. In 2017, I spent three weeks tearing apart an ERC-20 contract for an ICO that was days from launch, and found an integer overflow in the transfer function that would have let anyone mint balance out of nothing. I did not report it quietly. I wrote the whole thing up in raw technical detail and pushed it into the early crypto Twitter bloodstream before the token sale opened. It worked — the launch was paused, the code was fixed, and a lot of people kept money they would otherwise have lost. But the lesson I took was not "disclosure works." It was that the window between discovery and exploitation is measured in hours, and the only durable fix is changing the code, not winning the race.

Here, there is no public confirmation that the underlying flaw in the processor has been closed. What we have is evidence that someone got there first. Those are different sentences, and conflating them is how the industry talks itself into a second incident.

Do the math on 23,155

Numbers are a form of due diligence, and this one is worth running.

$5.7 million against 23,155 NFTs works out to an average of roughly $246 per asset. That is not the signature of a random sweep of floor-tier junk. It is not the signature of a blue-chip harvest either — a single Bored Ape would blow past that average on its own. It is the signature of mid-tier and lower-blue-chip collections, which lines up exactly with what has been described: Meebits, Otherdeeds, World of Women and their neighbors. Assets with real liquidity, real holders, and floors that make a bulk extraction worth the gas.

That average is also a useful sanity check on the whole story. A fabricated list would tend to skew either absurdly high, because fake numbers love drama, or absurdly low, because a lazy fabricator does not model floor prices. $246 is the unglamorous, plausible, middle-of-the-market number. We audited the silence between the lines of the approval table, and the silence read like a real portfolio.

There is a second-order effect here that matters more than the total. Otherdeeds belong to the Otherside ecosystem, and Meebits sit in the same family of assets. Neither collection did anything wrong. Neither team shipped the vulnerable contract. But when a shared piece of transfer infrastructure degrades, the reputational blast radius does not respect organizational boundaries. Passive assets get dragged into active incidents, and their holders discover that "not my code" is not a defense when it is their token that moved.

The forgetting problem is an industry problem

Here is where I stop being impressed by the response and start being annoyed by the pattern.

When a marketplace winds down a product, the standard playbook is: announce the sunset, disable the front end, redirect the domain, publish a cheerful blog post about "focusing on what's next." What is almost never in that playbook is a systematic campaign to help users unwind the permissions they granted while the product was live.

That is not a Magic Eden-specific failure. It is close to universal. Protocols treat contract deprecation as an engineering event. Users experience it as a UI event — the site is gone, so the risk is gone. Those two framings have almost nothing to do with each other, and the gap between them is where the money lives.

I signed unlimited approvals during the DeFi summer of 2020 the way everyone did: fast, excited, half-reading the confirmation screen, thrilled that gas was cheap and yields were absurd. I put 50 ETH into a Uniswap V2 pool and live-tweeted the whole experience because it was genuinely fun. Years later I went back through my approval history for an unrelated piece of research and found permissions I had granted to contracts I could not name, on products I had not thought about since. Some of them still had live allowances. All of them were still callable.

That is the ordinary condition of an ordinary user. Multiply it by every marketplace, every bridge, every lending pool, every NFT mint that ever asked for a blank check, and you get the real size of the surface area.

The uncomfortable truth is that the industry's security culture is built around the moment of signing, while its actual risk accumulates in the years after signing. We build elaborate warnings for the click and almost nothing for the residue.

Why the better primitive has not saved us

There is a fix for this, and it has existed for years. Permit2 and its descendants let approvals carry expiry timestamps and per-token limits rather than blank checks, and signature-based transfers avoid writing a standing allowance to the ledger at all. It is better in nearly every dimension that matters.

Adoption is still patchy, and the reason is not technical elegance. It is integration cost. Every new primitive a marketplace adopts is another audit, another edge case, another month of engineering that does not ship a feature users can see. Programmable approval is the correct direction, in the same way that Uniswap V4's hooks point at a genuinely more composable future — but a complexity spike severe enough to scare off most builders does not produce safer systems. It produces a long tail of teams that quietly keep calling the same lazy approve they called in 2021, because it works and nobody has complained yet.

The Base question is instructive too. Base is on the exposure list not because its technology is weaker, but because it accumulated users, and users accumulate signatures. The chain-level competition that everyone frames as a proving-system debate is, at the level of lived risk, a competition over where approvals get written. Whoever convinces projects to deploy gets the approvals. Whoever gets the approvals inherits the liabilities. That asymmetry never appears on a roadmap slide.

The contrarian read: this was not a success story

The dominant narrative forming right now is that Magic Eden disclosed promptly, coordinated with white hats, and saved $5.7 million in assets. On the surface, that is accurate and commendable. Look at it from a different angle and it becomes a warning.

First: if a rescue was necessary, the vulnerability was live at the time of the rescue. The white hats did not arrive after a fix. They arrived during an open window and won a race against someone else using the same open window. Reporting this as a rescue frames a mitigation as a resolution, and the difference is whether users still need to act. They do.

Second: the vulnerability was reportedly inside Limit Break's processor, not inside Magic Eden's own marketplace contracts. Processors exist to be integrated. A payment processor that one major marketplace used is a processor that other platforms plausibly integrated too, on other chains, under other brands, for the same royalty-enforcement reasons. If that is true — and it is the single most underreported implication of this event — then the population of at-risk wallets is not defined by who used Magic Eden. It is defined by who ever approved that contract, anywhere.

Third: the sharpest risk right now may be the cure. Every incident like this produces a wave of fake revocation sites, sponsored search results pointing at lookalike dashboards, and DMs from "support" offering to help you clear your approvals. The moment users are told to go revoke, the attack surface migrates from the protocol to the panic. Check the contract address, not the screenshot.

And the deepest irony: the fix being prescribed — go revoke your approvals — requires users to trust a wallet interface to correctly identify which contract to revoke. That is the exact class of interaction that created the problem. The remediation is the same shape as the disease.

What happens next

The next exploit in this category is already authorized. Somewhere on a ledger, a wallet holds a permission granted to a contract that no longer has a team maintaining it, and the only thing standing between that wallet and an incident is that nobody has gotten around to it yet.

Watch the on-chain count of remaining approvals to the retired processor. Watch whether Limit Break confirms a code-level fix rather than a raced rescue. Watch whether any other marketplace that integrated the same rails publishes a disclosure — silence there would be the loudest signal of all. And if you granted that permission on Ethereum, Polygon, or Base, treat the revoke as the trade: costs a few dollars in gas, closes a position you never knew you were holding.

We audited the silence in the revocation logs. Right now, they are still far too quiet.