跳到正文

地址投毒

地址投毒会把仿冒收款地址植入交易历史或其他看似可信的界面,诱使用户在后续付款时复制给攻击者;它利用的是收款方核验缺陷,而非篡改真实地址或窃取其密钥。

更新于

仅供教育参考,不构成投资建议。签名发送至错误地址的转账可能无法撤销,冻结或追回也绝无保证。

直接答案

地址投毒是一种替换收款方的诈骗。攻击者生成一个不同的地址,使其在界面中可见的前缀和后缀与可信收款方相似,再将其植入交易历史或其他看似可信的界面。攻击者期待付款方日后复制该仿冒地址,并向它签署一笔有效付款。此攻击不会篡改合法地址、破解其私钥,也不会让共识层错误路由转账。

被植入的记录可能来自真实的原生资产交易、符合标准的零额代币转账,或另一代币合约发出的日志。钱包和区块浏览器的活动页面都是派生视图:标为“发出”的一行可能源自事件字段,而不是由画面所示 from 地址签署的外层交易。应分别核验外层交易的发送方和目标地址、被调用合约、事件发出合约、索引字段以及实际余额变化。

ERC-55 校验和有助于发现部分意外输入错误,但攻击者的不同地址本身也可以格式有效并具有正确校验和。普通 20 字节 EVM 地址也不指明预期链、资产、收款方角色、充值备注或合约调用。安全的付款指令必须把这些事实全部绑定至完整目标地址。

地址投毒
0 / 5
0 项已核查; 5 项仍未解决

完成核查不代表资产、交易或系统已经安全。

运作方式

攻击者观察公开付款模式,并搜索一个自定义地址,使钱包截短后显示的字符与目标相符。匹配若干十六进制字符并不会克隆账户;未显示的字节仍然不同,新私钥由攻击者控制。一笔微额转账即可让这个真实地址进入历史记录。另一方面,ERC-20 要求把零额转账作为正常转账处理并发出 Transfer,因此零额记录本身不能证明存在伪造、账户失陷、授权或经济损失。

恶意代币合约也可以自行发出 Transfer(victim, lookalike, 0) 日志。该日志是可归因于发出合约的真实收据数据,但并非规范资产合约发出的事件,也不能证明受害者签署了外层交易。然而,如果索引器仅依据事件主题分类活动,却缺少足够的合约与调用上下文,仍可能展示误导性的转出记录。

决定性控制点是最终付款意图。它应绑定链和网络、原生资产或确切代币合约、完整收款地址、收款方类型、金额及原始单位,以及所有调用数据、备注、目标标签或有效期。交易所充值地址、跨链桥、代理合约及一次性路由可能过期,或要求地址以外的信息。剪贴板恶意软件和被篡改的二维码属于不同攻击,但相同的完整目标核验可以在签名前发现替换。

名称与测试付款只是辅助控制,而非身份证明。签名时应针对预期链解析 ENS 名称并记录结果;若界面显示反向名称,应再正向解析并确认其返回同一地址。小额测试只有在收款方独立确认,且主付款复用同一已固定目标时才有帮助。再次从历史记录复制会使这项保护失效。

采用以下流程:

  1. 从经过身份验证的独立来源固定链、网络、资产及确切代币合约、收款方类型、地址格式、金额,以及任何备注、标签、调用数据、版本或有效期。
  2. 名称或二维码只解析一次;核验格式与校验和,并把完整目标字节绑定到预期链。反向名称必须正向确认,不得把标签本身当成身份。
  3. 将目标与受控白名单、地址簿或已签署发票比较,绝不使用交易历史;新增或实质变更收款方时要求独立复核或双人审批。
  4. 解码确切的未签名交易:区分原生资产 to 与代币或跨链桥合约,并检查调用数据中的收款方、代币、原始金额、授权、截止时间及目标语义。
  5. 适当时向该已固定目标发送小额测试,并取得收款方独立确认;主付款不得再次从历史记录复制地址。
  6. 只能根据已核验记录签署主付款,在可信显示设备上比较完整目标和金额,再在正确链上核验收据、事件发出合约、日志及余额变化。
  7. 如怀疑投毒或误转,立即停止后续付款、保存交易哈希与证据,并酌情迅速联系收款服务、发行方或执法机构;冻结、退回和追回均应视为有条件措施,绝非保证。

示例

  • 截短显示掩盖差异。 合法地址 0x12ab1111111111111111111111111111111189ef 与攻击者地址 0x12ab9999999999999999999999999999999989ef 均显示为 0x12ab...89ef。两者共有 4 + 4 = 8 个显示的十六进制字符,但全部 32 个中间字符均不同。只比较显示的两端会产生错误匹配,完整字节比较则不会。
  • 自定义地址搜索工作量。 匹配 k = 8 个指定十六进制字符的预期工作量为 16^8 = 4,294,967,296 个候选。假设速度为 50,000,000 candidates/s,预期时间是 4,294,967,296 / 50,000,000 = 85.89934592 s。这说明的是搜索空间,并非承诺运行时间或钱包警告阈值。
  • 日志与状态。 某代币合约发出 Transfer(victim, lookalike, 0)。受害者余额从 250,000.000000 变为 250,000.000000,所以变化量为 0.000000;活动索引仍可能显示一条转账记录。应检查事件发出合约和调用授权:该记录本身既不能证明价值发生移动,也不能证明受害者签过名。
  • 测试必须固定目标。 某资金账户计划支付 50,000 USDC,先向已核验地址发送 1 USDC,取得独立确认后,再从同一固定记录发送 49,999 USDC1 + 49,999 = 50,000 USDC。如果工作人员为第二笔款项再次从历史记录复制仿冒地址,测试将不再保护这笔 49,999 USDC 付款。

风险

  • 付款方从被投毒的交易历史复制仿冒地址。
  • 截短界面隐藏不同的中间字符。
  • 自定义前缀或后缀被误认为收款方身份。
  • 零额 ERC-20 转账生成误导性历史记录。
  • 仿冒代币或其日志被误认为规范资产活动。
  • 索引器错误分类事件字段,或过迟才纠正。
  • 垃圾代币名称、符号或图标冒充可信资产。
  • 剪贴板恶意软件在签名前替换已核验地址。
  • 本地或同步地址簿遭投毒或已经过期。
  • 白名单绑定错误的链、资产、角色或地址版本。
  • 无效或缺失校验和的警告被忽略。
  • 有效校验和被误认为收款方身份证明。
  • ENS 解析发生变化、使用错误币种类型或已经过期。
  • 界面显示反向名称,却未作正向确认。
  • 小额测试后又从不可信来源重新复制地址。
  • 交易所充值地址、网络、备注或标签错误或已过期。
  • 对跨链桥、代理合约或合约目标及所需调用数据理解错误。
  • 即使使用硬件设备,签署者也只核对截短文本。
  • 错误收款交易在干预前已成为规范链记录。
  • 受害者依赖酌情性的发行方冻结,或再次遭遇追回诈骗。

常见误区

  • 地址投毒意味着钱包、密钥或区块链遭到入侵。 常见攻击利用的是收款方选择,而有效密码学和共识只是执行了签错的付款意图。
  • 零额记录必然是虚假的链上交易。 符合标准的转账与真实日志都可以是零额;必须检查来源及状态影响。
  • 首尾相同并有校验和就能证明收款方。 另一个有效地址可以匹配可见字符,并拥有自己的有效校验和。
  • 一次成功测试会自动保护下一笔转账。 如果主转账不复用已固定、已确认的目标,保护便会失效。
  • 钱包、验证者或代币发行方总能撤销付款。 追回权限和合作取决于资产、服务、司法辖区、证据与时机。

相关主题

来源

导航

搜索知识库...