EN ▼
Favorites
My Favorites
View All
Market Cap Price 24h%

Disclaimer: Content does not constitute investment advice. Trading involves risks—please invest with caution!

Address poisoning: Why is seven out of forty characters enough to transfer $2 million?

2026-08-24 12:16:04
Bookmark

Detailed explanation of address poisoning attack: How 2,000,000 USDC was stolen under a thirty-three character difference

On August 21, 2026, a transfer of 2,000,000 USDC flowed out of a wallet and finally arrived at an address-the address matched the correct address only on seven of the forty characters: the first four characters were consistent, the last three characters were consistent, and the remaining 33 characters were completely different. It is this precise truncation that makes up the entire attack, because wallets and blockchain browsers often display the address in abbreviated form: the first few characters, the next few characters, and the middle is replaced by three dots. Anyone who only looks at the abbreviated form will see the same content on the fake address as the original address.

This technology is called "address poisoning."

Address poisoning means that an attacker inserts a fake but similar-looking address into your wallet transaction history, so that when you copy the address later, you will mistakenly send funds to the fake address. There were no hackers, no keys were stolen, and no signatures were forged. The transfer is technically perfect and authorized by the owner. It was simply sent to the wrong payee, which on blockchain means irreversible.

This article breaks down the August 21 case and goes one step further than the report that has been released so far: We read the complete transaction history of the affected wallets and conducted statistics. The results showed that the bait address was not for one-time use, but belonged to an inventory-which accounted for one-third of all counterparty addresses that the wallet had traded.


Address poisoning resolution: How fake wallet addresses enter your history

An attacker does not need to access your wallet. They only need to leave an entry in your history, because for most users, history is the easiest source of collection addresses. Instead of copying a forty-character string from a contract, email, or slip of paper, you scroll back in the wallet app or browser to find the entry where the last transfer was made with the same payee, and copy the address from there. This "reachable range" is the target of attack.

There are two common ways to enter historical records. The first is "dust transfer": attackers send you a small, economically insignificant amount of money from their fake address. A fraction of a penny is enough. This way, they can put their address in your history without having to know anything about you.

The second method is a "false transfer event". On Ethereum and similar networks, anyone can publish their own token contract, and the contract can report anything. Such a contract sends an event that looks like you just sent a large amount of money to a specific address. A completed transfer that never occurred will appear in your history. For attackers, the advantage is obvious: An address where you "once" sent two million yuan in funds looks more familiar than an address that only sent dust.

Both approaches are almost zero cost to attackers and can be repeated at will. They don't need to know when you will transfer money again. They just need to make sure their entry is at the top of the list the next time you transfer money. Part of the reason this works so well on networks such as Ethereum is that any token contract can be published there without review.


Bofur Capital Case: Half an hour after withdrawing money from Compound, 2 million USDC was stolen

Security company PeckShield reported the incident on August 22, 2026 and attributed the affected wallets to market participant Bofur Capital. This attribution comes from PeckShield and cannot be confirmed based on blockchain data alone. We hereby quote it as a third-party statement. In contrast, the chronological order of events is public on the chain and can be verified. All times below are Coordinated Universal Time.

On August 20, at 20:12:23, the wallet transferred 2,000,000 USDC to the address it had used a month ago. 8 minutes and 36 seconds later, at 20:20:59, a dust transfer of 0.0002 USDC was received. The sender is an address that looks similar to the address you just used. The address was just charged to 0.000801 USDC by a third party a few seconds ago, which was just enough to pay for this bait transfer.

In the next two hours, two more "transfers" of 2,000,000 USDC each appeared in the wallet's history, sent to the same fake address at 20:41:11 and 21:16:11 respectively. Both transfers came from an external token contract and never actually occurred. So, to someone looking at the list the next day, the fake address looked like the wallet had just sent it millions of dollars multiple times.

On August 21, at 16:01:23, the wallet withdrew 2,000,000 USDC from the Compound USDC contract. 30 minutes later, at 16:31:11, 2,000,000.0000 USDC was sent to the fake address. There were no follow-up attempts and no corrections. Subsequently, the funds were transferred through a collection wallet, converted into DAI through a CoW Protocol settlement contract at 23:28:35, and deposited at a third address in the form of 1,999,939.476314 DAI at 23:31:11. As of the time of analysis in this article, the funds remain intact.


The first four characters, the last three characters: How similar are the fake addresses

The key is how low the similarity required for this attack. The actual collection address used matches the fake address on the first four characters and the last three characters. That is, seven of the forty characters. The thirty-three characters in the middle are different, and the differences in many of them can be seen at a glance.

The reason why it is still effective is the display method. Common abbreviations in wallet apps, browsers, and overview lists usually show the first six or so characters and the last four characters. It is this precise part that is almost identical at both addresses. The thirty-three different characters in the middle are located in the part of the interface replaced by three dots.

Generating such an address is neither an art nor a computational feat. The attacker iterates through the key pair until he finds an address that produces the required opening and ending characters. The more characters you need to match, the longer it takes, but on ordinary hardware, matching the first four and last four characters takes only a few minutes. This is also why the number of baits is not limited by the workload.


The largest bait cluster size in the history of affected wallets happens to be eight addresses, and their first and last four characters are exactly the same.


Dust transfer and sham transfer incidents: Two technologies, one target

In this case, both technologies were operating simultaneously, which was the missing part previously reported. Previously reported was a dust transfer of 0.0002 USDC. At the same time, there are also several so-called million-dollar transfers from fake contracts on the chain, which complete the picture in the historical record.

This difference is important in practice. Many users ignore the amount of dust from unknown addresses and classify it as advertising or spam. An entry that looks like a million-dollar transfer you just completed is more like a receipt. Anyone looking for the last payment made to the same payee will find this entry, and it is higher on the list than the original entry.

Technically, neither entry can be deleted from your own history. The blockchain forgets nothing, and events from external contracts are still visible, even if they are purely fictional. Some interfaces hide or flag suspicious contracts. You can't rely on this because the severity of testing varies from provider to provider.


Isograph in token name: Why fake token codes look like USDC in browsers

In order for fake entries to go unnoticed, the token must also be correct. Contracts used for this purpose carry token codes that look like USDC, DAI, or ETH in the browser, but in fact they are not. This technique is called "homograph".

Homograph refers to a character that visually looks very similar to another character, but is technically completely different.

The data we read includes multiple designs. One set of contracts uses the Cyrillic alphabet: replace the Latin letter S with the Cyrillic letter Dze, replace the Latin letter S with the Cyrillic letter Es, and add an accented U. The content displayed on the screen looks like USDC. The second set of contracts inserts invisible control characters between letters, such as zero-wide hyphens or Mongolian vowel separators. This way the token code looks exactly the same as the real code, but it doesn't. The third set of contracts uses the simplest means of replacing the capital letter I with the lowercase letter L, which is indistinguishable in many fonts. There are also some contracts that simply use the correct token code without any disguise, because the token symbol does not need to be unique.

This means for you: The token code next to the amount does not prove which token was actually transferred. The only reliable identifier is the contract address. USDC and DAI each have only one correct address, and each browser displays that address when clicking on a token.


Our own survey: How many bait addresses are stored in a single wallet history

This analysis was completed by cryptoticker.io on August 22, 2026. Using the public interface of the Blockscout Explorer, we retrieved all token transfer events for affected wallets, totaling six pages, then deduplicated and counted the records. We captured the timestamp, amount, token contract address, and sender and recipient.

Upon inspection: 300 unique token transfer events from November 22, 2025 to August 22, 2026, which contained 84 different counterparty addresses. Of these, 165 incidents came from real USDC or DAI contracts, and 135 came from other contracts.


Nine clusters, thirty-three addresses: Detailed count

We group all 84 counterparty addresses by whether their first four and last four characters match-that's what the abbreviation display shows.

Result: 33 of the 84 addresses belong to nine such groups. Each group contains at least two addresses that are indistinguishable in abbreviated form. As a result, about one-third of all counterparty addresses that the wallet has contacted belong to inventory at this similar address. The largest group contains eight addresses. There are five in the second largest group and four in the third largest group. There are also three groups with three members each, and two groups with two members each. The group to which the Aug. 21 theft belonged contained three addresses, while an adjacent group with the same beginning but a different ending had three other addresses, including the actual collection address used.

This distribution reveals a methodological feature: for each duplicate counterparty of the wallet, multiple lures are clearly created, rather than a single one. Anyone copying addresses from historical records is touching an inventory of which the correct addresses are in the minority.


Limitations of this survey

What we cannot verify should be included in the report just like the results. We don't know whether all nine groups are manipulated by the same actor; grouping describes a pattern, not attribution of responsibility. We don't know whether all 135 incidents from external contracts were attack attempts, as they clearly contained some ordinary advertising tokens that were not related to this technology. We don't know what wallet software the affected wallet uses or how it displays the address. We don't know if the same group has been exposed to German investors, and how much, because residency cannot be read from blockchain data. We don't know if the money will be recovered.


Compound contracts also have similar addresses: why even protocol addresses can be forged

A side result of counting deserves special attention. The wallet's most frequent counterparty is the Compound USDC contract, through which the wallet regularly deposits and withdraws funds. For this address, two other addresses were also found, with the first four and last four characters identical.

This extends the risk beyond the payee. Anyone copying a contract address from their own history to enter it into the wallet interface or check whether it interacts with the correct protocol can be misled in the same way. The precautions here are simpler than for private recipients: contract addresses for known agreements are listed in their documentation, and the browser tags verified contracts by name. In this search, both Compound contracts and CoW Protocol settlement contracts have this mark; similar addresses do not.


Eight minutes after actual payment: When the bait was set

The timing of the bait was the most surprising detail in our analysis. The attack followed the real payment and followed the same pattern twice. At 14:37:11 on July 21, 2026, the wallet transferred 2,000,000 USDC to its regular counterpart. 8 minutes and 12 seconds later, at 14:45:23, a dust transfer of 0.0002 USDC was received from an address with the same first four characters. This happened again on August 20: the real transfer was at 20:12:23, and the dust transfer was at 20:20:59, with an interval of 8 minutes and 36 seconds.

It follows that the chain is being monitored and that bait will only be set up after real, duplicate payments become visible. This is important for defense: The most dangerous location in history is the entry immediately above the most recent real transfer because it was placed where the next search will look for it. Anyone who regularly sends the same amount of money to the same address is a particularly attractive target for this technology.


Twenty-four seconds after the stolen money was parked, the same technology used by the thieves began to appear in the thieves 'own historical records.


Thieves were poisoned: What happened in the perpetrator's history 25 minutes after the theft occurred

At 23:31:11, the stolen 1,999,939.476314 DAI was stored at a new address. 24 seconds later, at 23:31:35, a transfer of exactly the same amount appeared in the history of the collection wallet and was sent to an address that matched the address just used in the first four and last four characters. The amount comes from a fake contract whose token code is disguised as DAI through an invisible control character.

Things have not stopped. At 23:44:23, a real 0.0002 DAI dust transfer was received from another similar address. During the night, three more fake transfers of the same amount were sent to three different similar addresses, along with entries from contracts posing as ETH, and a zero transfer from a real DAI contract on the morning of August 22. Within hours, at least four different addresses appeared in the perpetrator's history, all beginning and ending with the same four characters as the one he hid.

This episode is more than just a footnote. It first shows how automated the technology is: a large, freshly filled position is obviously discovered and utilized within seconds, without anyone having to check its owner. Second, it suggests that the attack does not require any information about the victim. It targets a habit, not a person.


Checking addresses instead of replicas: Steps to invalidate attacks

The good news about this technique is that it depends entirely on a habit. Anyone who does not obtain a collection address from transaction history will not be affected by address poisoning, no matter how much bait there is on their list.

Therefore, the first and most important step is to obtain the address from the original source. That is, the invoice, the exchange's withdrawal page, the wallet's address book, or the payee's message. Your own historical record is not a source, but a copy that anyone can write.

The second step is a comprehensive inspection. Compare the entire string rather than the abbreviated form. The most reliable method is to place addresses from both sources side by side and check it character by character, or paste it into a search field to check whether the addresses found do indeed have the expected history. A glance at the first and last characters is exactly what the attacker expected.

The third step involves the middle part. If you can only check one paragraph, deliberately check the characters in the middle of the address, not the characters at both ends. In our case, thirty-three of the forty characters are different, and all thirty-three are in parts that no one is reading.


Why hardware wallet display is the last line of defense

Hardware wallets display the payment address on their own screen before confirming a transaction. This screen is not connected to a computer and cannot be rewritten by a tampered interface. As a result, it is the last line of defense to intercept wrong recipients, and you can scroll through the full address on most devices. Especially in large transactions, it's worth taking a few seconds to compare. Which devices implement this display and how, please see our Hardware Wallet Comparison.


Address books and whitelists: How to set a collection address at one time

As the case shows, duplicate payments are the preferred target. Address books are helpful for this. Almost all wallet apps and large exchanges allow you to store a collection address at a time, name it, and then just choose that name later. The step of copying from history is completely eliminated.

On exchanges, the same feature is often called a cash withdrawal whitelist. It has an added benefit: New addresses typically require a waiting period of 24 or 48 hours before they can be used. Even if someone controls your account, you can't immediately send the balance to a new address. Please check whether your provider provides this lock-up period and whether it is turned on, as it is usually not turned on by default.

The timing of the entry remains crucial. If you import an address into the address book from your poisoning history, the address will be permanently wrong there and the next error will occur automatically. Please enter the address from the original source and check it completely when entering.


Test transfers: When a small advance is helpful and when it will only increase the cost

Paying a small advance to a new address is a reasonable safeguard, provided that the recipient can confirm receipt with you. This way you are checking the results rather than the address, which is a more robust test. On the exchange, you can see the receipt in your account; for business partners, you need to receive a reply.

Without such confirmation, the test transfer has little effect. The transaction being confirmed only means that the address exists. In an address poisoning attack, a fake address obviously exists, and it will also accept a test amount. If someone makes a large transfer without a confirmation reply, it's just paying the same attacker twice.

Cost must also be considered. On high-fee networks, test transfers can be expensive, while full address comparisons are free. The effective order is to thoroughly check the address first, and then perform additional testing for new payees and large transactions.


Recording losses: What details should be retained after a transfer error

Once funds are lost, the blockchain does not change this fact. Confirmed transactions cannot be reversed and no one can reverse them. The important thing now is to record it, and it needs to be done immediately, because the interface will change and the overview will be reordered.

Please save the transaction hash, complete collection address, exact time, amount, and contract address where the token was transferred. Also save the timestamp of the entry where you copied the address, because this will establish the sequence of events. Screenshots supplement this, but cannot replace these identifiers. What practical possibilities are then, and what has been completely lost, are explained in our article on sending cryptocurrency to the wrong address.

There are no clear and generally accepted rules in Germany regarding the tax treatment of such losses, and we deliberately refrain from elaborating on them here. What you can do is lay the groundwork: a complete, consistent record of all transactions for use by tax advisers. Portfolio and tax instruments help with this because they keep permanent records of addresses and transactions.


Identify Address Poisoning: Summary of Key Points

Never get a collection address from a transaction history. Please obtain it from the invoice, withdrawal page or address book. Historical records are the only place attackers can write about, and that's why they start there. Which wallets have available address books, please see our software wallet comparison.

Check the full address, focusing on the middle part. In our case, seven out of forty characters were enough to make the abbreviation look exactly the same. For large transactions, the address should also be read on the hardware wallet screen, because the screen cannot be tampered with; for an overview of each device, please refer to the hardware wallet comparison.

Set up your address book and withdrawal white list before you need it. Enter duplicate payees once from the original source and open the lock-up period for the new address when available. Maintain a clean archive of addresses and transaction records, such as using one of the tools in our Tax and Portfolio Tools Overview.

The evidence in this article is publicly verifiable: our statistics are based on reports of the incident and the complete transaction history of the affected wallets in the Blockscout Explorer.

Disclaimer:

All content published on this website, including hyperlinks, related applications, forums, blogs, and other media accounts, originates from third-party platforms and their users. CoinMarketInsight makes no representations or warranties of any kind regarding the website or its content. All blockchain-related data and materials are provided for informational and research purposes only and do not constitute financial, legal, or investment advice. Users and third parties are solely responsible for the content they publish. CoinMarketInsight shall not be liable for any losses arising from the use of this website. You should exercise caution and conduct your own independent research, review, analysis, and verification before making any decisions.

Read Full Article
More News
TOP

TOP