Two nearly identical bitcoin addresses side by side with a copied marker and a transaction list below
安全·9 分钟阅读

地址投毒如何让一家机构损失 200 万美元

一家投资机构把 200 万美元的 USDC 发到了错误的地址。不是打错字,不是私钥泄露,也不是钓鱼网站:操作员从公司自己的交易记录里复制了一行,而这一行属于别人。

资金在几分钟内被兑换成了 DAI。这笔转账没有任何可逆之处,工作流里也没有任何环节报警,因为从钱包的角度看,这笔交易完全正常。

地址投毒如何运作

地址投毒始于一笔你没有要求过的付款。在这个案子里是 0.0002 USDC,从一个首尾字符与他们长期往来的交易对手一致的地址,发到了该机构的钱包。

这场攻击瞄准的是习惯,不是系统。没有人会把一串四十二个字符从头读到尾。人们看开头几位,瞥一眼结尾几位,认出形状,然后复制。差异恰恰住在中间,而中间正是界面隐藏起来的部分。

一旦被投毒的条目落进历史交易列表,攻击者的活就干完了。盗窃由受害者亲手执行,网络予以确认,而且无处申诉。

为什么专业人士也中招

Bofur Capital 并非缺乏经验的持有者。它与真正的交易对手有稳定合作,此前也向那个地址转过账。这份熟悉恰恰就是漏洞:地址看着眼熟,操作看着例行。

这个案子真正值得学习的是准备工作。被投毒的条目是在那笔大额转账前约二十小时植入的。攻击者一直盯着这个钱包,等的就是一个新鲜的诱饵能停在历史列表顶部附近、被最先选中的时刻。

这是定点作业,不是广撒网。大额钱包是公开的:余额、交易对手、付款节奏都看得见,攻击者可以先列出候选名单,然后只需等待。

它的规模

地址投毒已经不再是奇闻。追踪 USDT 尘埃转账的分析师记录到三个月内增长 612%,这波激增紧随一次让经济账更划算的网络升级之后。

覆盖 2022 年 7 月至 2024 年 6 月的早期研究给出了基准量级:约 1700 万次投毒尝试,至少 130 万名受影响用户,损失下限 7930 万美元。

同一项研究还发现,这类攻击在低手续费链上的发生频率要高出 1300% 以上。逻辑就是算术——便宜的交易意味着同样的预算能撒到更多钱包,而地址投毒的收益随网撒得多大而放大。

在头条案例之外,个人损失同样高企。一位投资者向攻击者发出了超过 50 万 USDT,走的是完全相同的路径:打开历史、复制一行、粘贴、确认。

同一套思路的四种变体

经典版本用一笔尘埃付款:攻击者花掉不到一分钱,只为让自己的地址出现在你的交易列表里。

第二种用零值转账。代币标准允许代表另一个地址发起零单位的转账,于是列表里出现一条记录,显示你似乎向攻击者转过账。攻击者的成本:零。

第三种靠算力。攻击者生成的地址不只在首尾与目标一致,还要在中间若干位上对上,这需要真金白银的算力,只留给值得这笔开销的目标。

第四种把载荷藏进元数据。一个代币到账,它的名字里含有一个仿冒地址或一个链接,受害者直接从代币名称里复制那串字符。严格说这是钓鱼而非地址投毒,但入口是同一张列表。

把它们串起来的共同点是:没有一种需要拿到你的私钥。攻击者只需要一件事——你复制错那一行。

交易记录不是通讯录

地址投毒要奏效,必须有一个假设成立:历史视图是一份经过审核的交易对手名单。它不是。它包含每一个曾经给你发过任何东西的人,包括你从没听说过的。

界面把情况变得更糟。多数钱包和浏览器把地址截断成六位、省略号、再四位的样子。正是这种格式让替换变得可行,因为对上首尾就足以换取一个人的信任。

搜索框里还有第二个陷阱。输入熟悉地址的开头几位,得到一个匹配,取用结果。被投毒的条目会和真的一起浮现在搜索里,而按时间排序往往把假的排在最上面。

所以规则很直白:历史是用来读的,永远不要用来复制。地址应当来自通讯录、二维码,或者一条通过你另行验证过的渠道收到的消息。

技术层面的防守

使用地址簿。把核验过的交易对手保存一次,清楚标注,并且只从这些已保存的条目发起转账。仅此一条就能消除大部分暴露面。

先发一笔试探交易。任何大额转账之前,先转一个零头,让收款方确认收到。它只花几分钱,却救回过八位数的金额。

在不得不手工输入时,比对整串字符。从中间开始、每四个字符一组地核对,比听上去快得多,而且彻底击穿首尾比对。

使用带屏幕的签名设备。硬件屏幕上显示的地址,是替换还能被抓住的最后一个点——前提是你真的去读。

启用提币白名单。多数交易所和不少钱包都能把转出限制在预先批准的地址上;对公司而言这应当是强制配置,而不是一个选项。

过滤进来的杂物。有些钱包能隐藏零值转账和来自陌生发送方的代币。严格说这不算防护,但一份干净的历史,意味着诱饵没法紧挨着真货坐着。

流程层面的防守

当工作流是为一个人设计的,技术控制就会失效。在这类企业损失中,多数情况下是同一个人既准备付款又批准付款。

拆开角色。输入地址的人和授权发送的人应当是两个人,而地址应当通过共享目录在他们之间传递,而不是靠截图。

多重签名从机制上达成同样的结果:第二个签名意味着第二双眼睛看过目标字符串。

引入延迟。大额转账不应当在地址粘贴之后立刻执行。五分钟的复核暂停恰好打断这类攻击所依赖的场景,因为诱饵靠的正是它在记忆里还很新鲜。

如果尘埃已经到账

目前什么都还没发生。收到一笔未经请求的小额付款,并不赋予发送方对你资金的任何权利,也无法移动任何东西。

不要与这些代币互动。不要转发它们,不要尝试兑换它们,也不要打开嵌在代币名称里的链接——那条路通向的是掏空程序,不是清理工具。

如果钱包支持,就把发送方标记为垃圾并隐藏该条目。然后检查诱饵是否落在了列表中你真正交易对手的旁边,因为正是这种毗邻催生了错误。

如果尘埃持续到账,就把它当作一个信号:你的地址在某份目标名单上。换用一个新的收款地址,旧的只留着看历史——地址投毒依赖的是一串特定字符,换掉它就作废了攻击者此前的全部铺垫。

如果转账已经发出

动作要快,但对结果要有现实预期。记下交易哈希和收款地址,并立刻联系路径上的任何中心化服务。

稳定币留了一道窄门:发行方可以应执法机关要求冻结余额。这需要一份报案记录,实践中还需要金额大到足以让流程走得下去。

无论胜算如何都要报案,附上哈希、金额、时间戳和截图。即便资金追不回来,这份材料对账务、保险,以及未来由多名受害者共同构成的案件都有意义。

还有,无视任何提出先收费再追回的人。每一次公开的事件之后几天内,这类消息必然到来,那是同一个行业在做下一道工序。

简短版

地址投毒没有攻破任何密码学,也没有碰过任何私钥。它利用的是人类的一条捷径:信任一个看起来眼熟的开头和结尾。

防守办法既便宜又无聊——用地址簿代替历史列表,大额之前先发一笔试探,审批环节加上第二个人。那家损失 200 万美元的机构,三条一条都没有。

FAQ
收到一个不认识的代币,本身危险吗?

不危险。一笔进账不会给发送方任何对你钱包的控制权,也不会移动任何东西。风险只在你与那个代币互动、或者从那条记录里复制地址时才开始。

转错之后钱还能追回来吗?

几乎不可能。交易是终局性的,收款方由攻击者控制。唯一现实的路径是稳定币发行方应执法机关要求冻结余额,而这适用于大额。

硬件钱包能防住这个吗?

部分能。它会在自己的屏幕上显示收款地址,这是一道真正的最后防线——但只对肯读的人有效。不看就确认,效果和根本没有设备一样。

为什么这类攻击在便宜的链上更常见?

因为撒种要花钱。手续费越低,同样一美元能投毒的钱包越多,研究显示低费网络上的发生频率高出十三倍以上。

攻击者多快把钱转走?

立刻。这个案子里 200 万美元的 USDC 在几分钟内就被换成了另一种稳定币,这让冻结和追踪都变得更难。

地址簿和二维码,哪个更安全?

两者都胜过历史列表。二维码适合一次性付款,地址簿适合长期往来,而无论哪种,保存下来的那串字符都应当在保存的那一刻逐字核对一次。

关于作者
加密市场专家兼内容与营销部主管

EIDEX 加密市场专家兼内容与营销部主管。专注于市场结构、交易所基础设施和跨链交易,将链上数据和市场变化转化为面向交易者的清晰、可落地的研究。

分享本文TelegramX