The incidents below span DNS, npm, cloud, mobile, and AI - dozens of them. Listed channel by channel they look like a sprawling zoo, and each new one feels like a new threat. The single most useful idea in this piece is the opposite: stop classifying incidents by "which system broke" and split each one into two independent axes.
Payloads - what actually steals the money - are few:
- Approval / permit-phishing drainer. The user is lured by something routine - a claim, a swap, a "verify wallet" prompt - and asked to sign. What they sign is an ERC-20 approve (often for an unlimited allowance) or a gasless ERC-2612 Permit, which lets the attacker's address pull the tokens later with transferFrom. The key is never stolen; the user authorizes the theft, and the tokens leave in a separate transaction minutes or days afterward. Permit is the fastest-growing variant because it is an off-chain signature, not an on-chain transaction: there is no gas prompt and no "transaction" warning. Modern wallets increasingly decode Permit and can surface - even flag - the spender and amount, but it still presents as a "signature request" rather than a transfer, which is easier to wave through.
- Man-in-the-browser drainer. Injected code sits between the page and the wallet, hooking window.ethereum.request (and the Solana provider) to intercept eth_sendTransaction / signTypedData calls. It rewrites the recipient or calldata on the way to the wallet - often to a visually similar look-alike address - so the wallet only ever receives the tampered version and displays that. Unless the user verifies the destination on a hardware screen, the correct-looking page and the tampered signature are never checked against each other. Clipboard-swap variants do the same to copied addresses.
- Credential / key stealer. Harvests seed phrases, private keys, .env files, cloud credentials (AWS/GCP), and - increasingly the real prize - npm and GitHub publish tokens, from a developer machine, a CI runner, or a cloud environment. The stolen data is used either for direct theft or as a stepping stone: a stolen maintainer token becomes the next supply-chain compromise.
- Signing-interface deception. The signer is legitimate and the key is intact, but the interface shows one thing while another is signed - an ordinary transfer on screen, a delegatecall or owner-swap in the bytes. Hardware wallets only partly help here: they can clear-sign standard, decodable transactions, but complex calldata - a delegatecall, an unknown contract - tends to fall back to blind-signing, where the display looks the same whether the payload is harmless or malicious (this is the Bybit mechanism, below).
The first two are worth seeing as flows, because every later mention of "drainer" and "
Permit" reduces to these two pictures. Approval-phishing gets the user to
authorize the theft: