Address Poisoning Attacks: How Treasuries Lose Millions
Quick answer. Address poisoning plants a lookalike address in a wallet's history with zero-value, dust or fake-token transfers, hoping someone copies it for the next payment. Institutions stop it with allowlists, verified address books and policies that block unlisted destinations.
Video transcript
Address poisoning breaks no keys and no contracts. The victim signs a valid transfer, to the wrong address.
Attackers watch for stablecoin transfers, generate an address matching your recipient's first and last characters, plant it in your history with a zero-value or dust transfer, and wait for you to copy it.
Checking the ends fails. A USENIX Security 2025 study found one attacker group matching up to 20 characters.
In May 2024, one victim lost about 68 million dollars in WBTC, later mostly returned. In December 2025, nearly 50 million USDT was swapped within 30 minutes and moved to Tornado Cash.
That December loss followed a 50 USDT test to the right address. A test proves only the address you tested.
The same study counted 270 million poisoning attempts and at least 83.8 million dollars lost, a lower bound.
Remove the copy step. Keep one verified address book, confirmed by a second person. Enforce an allowlist in custody, and compare the full address before signing.
Monitor for poisoning transfers and warn staff the same day. Alert on payments outside the address book. If funds reach a lookalike, ask the issuer and exchanges to freeze them fast.
Guardian's Managed Security monitors large fund movements, and an OpSec audit reviews how your team approves and changes funds. Read the full article, or talk to Guardian.
Address poisoning breaks no keys and no contracts. The victim signs a valid transfer, to the wrong address.
It works because people copy addresses from their transaction history and check only the first and last few characters.
Treasury and operations teams move large sums, so one copy-paste error can cost millions. Two cases since 2024 each lost about $50M or more.
How the Attack Works
The attacker watches a chain for transfers, usually of stablecoins. Then it targets the sender.
- It generates an address whose first and last characters match the victim's usual recipient.
- It plants that address in the victim's history with a zero-value, dust or fake-token transfer.
- It waits for the victim to copy the lookalike for the next payment.
Zero-value transfers need no approval from the victim. Popular token contracts let anyone call transferFrom for an amount of zero, naming any sender.
So the victim's history shows an outgoing transfer they never made, to an address that looks familiar.
Three variants
| Variant | What appears in your history | Tell |
|---|---|---|
| Zero-value transfer | A transfer of 0 tokens "from" you to the lookalike | You never sent it |
| Dust transfer | A tiny real-token payment from the lookalike | An unexpected small incoming amount |
| Fake token | A counterfeit token named like USDC or USDT | Wrong contract, often no icon |
Why checking the ends fails
Lookalikes are made by brute force: generate keys until the start and end of the address match.
In the $68M WBTC case below, the lookalike matched the first and last six characters, per CoinDesk.
A USENIX Security 2025 study found one attacker group matching up to 20 characters across the two ends.
A glance at the first and last four characters is no check at all.
Notable Losses
| Date | Loss | What happened | Outcome |
|---|---|---|---|
| May 2024 | 1,155 WBTC (about $68M) | Lookalike mimicked a 0.05 ETH transfer | About 22,960 ETH ($65.7M) returned from May 10 |
| Dec 20, 2025 | 49,999,950 USDT | Full transfer 26 minutes after a 50 USDT test | Swapped to DAI, then ETH, then Tornado Cash |
The WBTC attacker returned nearly all of it, over 96% by value, after negotiations, per Cointelegraph.
In the December case, the attacker swapped the USDT to DAI within 30 minutes, per The Block. Tether can freeze USDT in flagged wallets, so the swap put the funds beyond its reach.
The same case shows the limit of test transfers. The 50 USDT test went to the right address; the full amount went to a lookalike, likely copied from history.
A test proves only the address you tested. It says nothing about the address you paste next.
The scale
The USENIX study scanned Ethereum and BNB Smart Chain from July 2022 to June 2024. It defines its terms narrowly:
- 270 million attack attempts: poisoning transfers sent to targets.
- 17 million victims: addresses that had sent major stablecoins and were targeted.
- 6,633 incidents: cases where a victim then paid a lookalike.
- At least $83.8M: lost in those incidents, a lower bound.
It tracked only a few stablecoins, so the WBTC loss is not in that total.
Treasury Controls
The goal is to remove the copy step from payments altogether.
Allowlists and address books
- Keep one verified address book. Add entries only from the counterparty's own channel.
- Have a second person confirm each new entry, ideally by a call to a known contact.
- Enforce an allowlist in your custody platform, so unlisted addresses cannot be paid at all.
- Treat a new address as a change request, not a payment detail.
Custody platforms build this in. Fireblocks, for example, blocks transfers to outside addresses unless they are whitelisted, and each addition needs Admin Quorum approval.
Its one-time address feature bypasses that list, and Fireblocks warns it "poses security risks". Keep it off for treasury vaults.
Payment procedure
- Never copy a destination from wallet history or a block explorer.
- Pay only to saved address book entries.
- Compare the full address on the signing device, not just the ends.
- Send a test, have the recipient confirm it, then pay the rest to the same saved entry.
- Require a second approver above a set amount.
What each control covers
| Control | Stops | Gap |
|---|---|---|
| Allowlist in custody policy | Any payment to an unlisted address | An entry added without verification |
| Verified address book | Copying from history | Staff who bypass it |
| Full-address comparison | Lookalikes that match the ends | Fatigue at high volume |
| Test transfer | A wrong saved address | A lookalike pasted after the test |
| Wallet lookalike warnings | Near-matches to past recipients | Coverage varies by wallet |
Wallet warnings
Turn on every warning your wallet offers. MetaMask shows a blocking warning before a send to an address that closely resembles one you have used. It also warns on addresses you have never sent to.
The USENIX authors also recommend that wallets hide suspected poisoning transfers and show more of each address.
Detection and Response
- Monitor treasury addresses for zero-value, dust and fake-token transfers from lookalikes.
- Treat a poisoning attempt as a sign someone is watching your flows. Warn staff that day.
- Alert on any outgoing transfer to an address outside the address book.
- Hide or label zero-value transfers in internal dashboards and reports.
If a payment does go to a lookalike, minutes count. Ask the issuer and any receiving exchange to freeze it before it is swapped.
Our guide to the first hour after a wallet drain covers the steps. Exchanges should also see our exchange incident response plan.
How Guardian Helps
Guardian's institutional advisory designs trust boundaries, approval thresholds and key custody before they are built.
Managed Security monitors contracts on every block, including multisig transactions and large fund movements. Its security operations team reviews every multisig transaction before it is signed.
An OpSec audit reviews how your team holds, approves and changes funds. For signing hygiene beyond payments, see our guide to Permit2 phishing.
Frequently Asked Questions
What is address poisoning in crypto?
A scam that plants a lookalike address in your transaction history with zero-value, dust or fake-token transfers. It succeeds if you later copy that address for a real payment. No keys or contracts are compromised.
Can address poisoning steal funds without my signature?
No. A zero-value transfer can appear in your history without your approval, but it moves nothing. Funds are lost only when you sign a transfer to the lookalike address.
Is a test transaction enough to prevent address poisoning?
No. A test confirms only the address it went to. In December 2025, a trader's 50 USDT test went to the right address, then 49,999,950 USDT went to a lookalike about 26 minutes later, per The Block.
Can poisoned funds be recovered?
Do not count on it. The May 2024 WBTC attacker returned nearly all of the funds, but the December 2025 attacker swapped the USDT within 30 minutes and moved it into Tornado Cash. Prevention is the only reliable control.
Sources
- USENIX Security 2025 (arXiv): Tsuchiya, Dong, Soska and Christin, Blockchain Address Poisoning (revised July 2, 2025)
- CoinDesk: Exploiter Steals $68M Worth of Crypto Through Address Poisoning (May 3, 2024)
- Cointelegraph: WBTC address poisoner sends nearly all funds back to victim after negotiations (May 10, 2024)
- The Block: Crypto trader loses $50 million in address poisoning attack, offers $1 million bounty for return (December 20, 2025)
- Revoke.cash: Common Scam: Address Poisoning (accessed November 5, 2026)
- MetaMask Help Center: Address poisoning scams (accessed November 5, 2026)
- Fireblocks Developer Portal: Whitelist addresses, overview (accessed November 5, 2026)
Take the copy step out of your treasury payments
Guardian designs approval thresholds, key custody and signing models for institutions, then watches large fund movements around the clock.