地址投毒:攻击原理与发送前如何核对地址

更新于

简短回答

地址投毒是一种骗局:攻击者在你的交易记录里植入一个相似地址——首尾字符相同、中间不同——等你下次转账时误复制。它本身拿不走你的钱,只有你粘贴了错误地址并确认发送才会造成损失。防御很简单:永远不要从交易记录里复制收款地址;核对完整地址(尤其是中间部分);使用已核实的地址簿;大额转账在硬件钱包屏幕上确认。

攻击如何进行

Etherscan 总结了三种常被组合使用的手法(Etherscan:地址投毒):

MetaMask 帮助中心描述了典型流程:你正常转了一笔账;监控稳定币转账的程序发现后,攻击者生成相似地址,从该地址给你转一笔零金额或极小金额;之后你从记录里误复制了这个地址(MetaMask:地址投毒骗局)。链上已确认的转账无法撤回。

各链地址格式

了解每条链的有效地址长什么样,既能发现伪造地址,也能发现选错网络。

链类别格式开头内置纠错
以太坊及 EVM L2、BNB 智能链、Polygon0x + 40 位十六进制0x…可选大小写校验(EIP-55)
波场Base58CheckT…编码内含校验
SolanaBase58 编码的 Ed25519 公钥,通常 44 位无固定前缀有效公钥内部的错字无法发现

来源:ethereum.org:账户、ERC-55、NEAR Intents:支持的链。

由此有两点结论。所有 EVM 链共用一种格式,看起来正确的 0x 地址并不能说明网络对不对——见 USDT 网络选择指南。校验和只能发现打字错误,挡不住投毒:伪造地址本身就是完全合法的地址。

发送前核对清单

  1. 从源头取地址,不从记录复制。 使用收款方自己的收款页面、二维码,或你之前核实过的地址簿条目。
  2. 比对完整字符串。 检查开头、结尾,以及中间至少两组字符。MetaMask 特别提醒要注意中间部分。
  3. 核对网络名称:收款页面写的网络与钱包里选中的网络是否一致。
  4. 看代币合约地址,不要只看符号。假币会照抄名称和符号,合约地址才是关键。
  5. 在设备上确认。 使用硬件钱包时,比对设备屏幕显示的地址。见硬件钱包跨链流程。
  6. 新地址先小额测试。 Trezor 建议大额转账前先发一笔小额测试,但这意味着要付两次 gas(Trezor:地址投毒)。

跨链时的特别注意

跨链转账的目标地址是在源链上填写、在另一条链上使用的,填错了在目标钱包里看不到,等发现已经太晚。签名前:

已经发到投毒地址怎么办

发到攻击者地址的资金由攻击者控制。记下交易哈希,向区块浏览器和钱包服务商举报该地址,并警惕任何收费「找回」服务。本站的安全事件列表记录的是协议层面的损失,不收录个人骗局。

常见问题

地址投毒不需要我签名就能偷钱吗?

不能。植入的转账不会让攻击者获得你钱包的权限。只有你自己把钱发到相似地址才会造成损失。

要不要隐藏交易记录里的零金额转账?

隐藏有帮助,但最重要的防护是永远不从交易记录中复制收款地址。

EIP-55 校验和能保护我吗?

它能发现大小写混合地址中的打字错误,但无法识别你粘贴进来的另一个合法地址。

资料来源