你批准了钱包签名,盗窃却在之后发生

了解加密货币诈骗如何利用钱包签名、链下权限的风险,以及保护你的资产免遭盗窃的必要步骤。

Nahla Davies SecureWorld
漏洞分析钓鱼攻击APT活动远程代码执行

今年7月,新加坡警察部队发布了一份关于加密货币诈骗的公告,该诈骗有一个令人极为不安的特征:危险环节结束后,一切看似正常。可疑的视频通话结束,没有转账发生,钱包余额分毫不差。本次会话中被窃取的不是资金,而是一个签名。攻击者持有的已签名代币授权可在其有效期内持续发挥作用,等待账户无人关注的时机。

这正是本文严肃探讨的前提。“没有资金移动”与“没有任何授权”并非同一回事,诈骗就发生在这两种表述之间的灰色地带。缩小这一差距需要提出本文后续将深入探讨的问题:签名实际能做什么?硬件钱包真正会检查什么?以及在签名请求感觉异常后的尴尬几小时里,你该怎么做?

盗窃在交易出现前就已开始

该公告中的攻击链并非始于区块链,而是始于一个 Telegram 联系人,随后是视频通话链接,接着是安装看似软件更新实则为恶意软件的提示。在该受感染会话的某个环节,会出现一个看似常规的钱包提示,受害者点击签名后,什么都没发生——当天没有,也没有明显迹象,有时甚至数周都没有。

等待期是攻击者的“优势”。已签名的授权存在于链下,由攻击者掌控,持有有效授权的人可选择何时提交。提交后会激活代币额度,清空账户的转账则由攻击者在选定的时间发起。与此同时,受害者已查看余额,未发现异常,继续了一周的生活。

大型诈骗浪潮通过相同的社交渠道运作,SecureWorld 已报道过与钱包相关的诈骗如何在 Telegram 驱动的诱饵下蓬勃发展。授权版本更恶劣的地方在于延迟:耗尽钱包的钓鱼网站会立即暴露自己,而被窃取的签名则让攻击者拥有调度决策的空间。值得注意的一点:该攻击链是公告中描述的内容,是需要防范的模式,而非每个攻击者都会遵循的通用剧本。 图 1。公告中的攻击链,将链下等待期与提交、额度及转账环节分开。原始图表基于新加坡警察部队公告和 ERC-2612。

签名可以是授权凭证

钱包会要求你批准多个在当下感觉相同、实则截然不同的事项:将钱包连接到 dApp 会共享你的地址;签名纯消息可证明你控制该地址;在链上批准代币会授予额度并消耗 Gas;转账代币会转移它们。还有第五个,即本文的主题:签名 ERC-2612 授权,这是一种链下签名,可在签名时无需触及链即可授权未来的额度。

授权的内容并不像听起来那么复杂:它指定了所有者(即你)、被授权者(即被授权的地址)、额度(即被授权者可提取的数量,有时是无上限)、随机数(用于防止旧授权在新授权处理后被重复使用)以及有效期(签名过期的时间)。令人惊讶的部分是中继行为:该标准允许任何调用者提交有效授权,而“任何调用者”包括你从未见过的人。提交后,额度生效,后续的代币转移只需使用该额度即可。

快速说明术语,因为这些诈骗报道中术语常被混淆:Permit2 是一种独立机制,由 Uniswap 构建的合约,通过自身系统管理授权,钱包供应商将其视为独立的签名钓鱼类别。相关问题,不同的实现方式。将这些标签混为一谈会使应对步骤变得比必要更混乱,因此本文坚持使用 ERC-2612,仅在差异真正重要时提及 Permit2。 图 2。五个钱包提示分别实际授权什么,以及哪些会立即触及链。原始对比图基于 ERC-2612 和 MetaMask 的签名钓鱼指南。

为什么硬件钱包完全按照要求行事

受害者首先会问:使用硬件钱包怎么可能发生这种情况?种子从未离开设备,没人看到私钥。这两个说法都可能为真,而资金仍会被盗,因为设备的承诺比所有者对它的心理模型更狭窄。硬件钱包保护密钥,签署你批准的内容。如果你批准的是授权他人花费代币的有效请求,设备已完美执行,而你仍会被盗。

这将真正的安全边界移到了屏幕上。行业内将这种良好做法称为 清晰签名:将编码请求转换为人类可在设备自身可信显示屏上评估的意图,包括操作类型、代币、被授权者、数量或上限、有效期、链。当钱包无法解码请求时,你会得到盲签体验,即哈希或一堆十六进制字符,下方是批准按钮。批准你无法阅读的信息,就像一场伪装成安全仪式的抛硬币游戏。

因此,操作规则很简单:阅读硬件屏幕上的六个字段,而非电脑上的。当笔记本电脑和设备显示的内容不同时,相信设备并停止,因为分歧就是警告。

签名与可见之间的危险差距

大多数人知道的防御建议是“检查你的授权”,这是个好建议,但该诈骗利用了其盲点。额度检查工具读取链上状态,未提交的授权并非链上状态;在有人提交之前,它仅作为签名存在,Revoke.cash 自身的工具指南也谨慎地指出了这一点。因此,可疑通话后一天的干净授权仪表板,其证明力比看起来要小得多,授权可能只是在等待。

授权提交后,情况会好转:额度现在可见,可像任何其他代币授权一样 审查和撤销。但要注意撤销并非什么:断开钱包与 dApp 的连接会改变连接状态,完全不影响额度;这些是独立的系统,很多人“断开连接”后陷入虚假的安全感。

至于取消已签名但未提交的授权,没有通用的单一路径。某些情况下可以使随机数失效,具体机制取决于账户、代币合约和涉及的钱包。这需要官方渠道提供的、当前的、针对特定钱包的指南,而非本文编写的通用教程。

当签名感觉异常时该怎么做

首先,弄清楚你实际遇到的问题:一个无人提交的签名是一种情况,一个已激活的额度是另一种情况。设备上的恶意软件或不再保密的种子会彻底改变一切。理清这些是关键;以下步骤可防止你在理清问题时让情况恶化。

停止并转移到已知干净的环境

结束通话或会话,停止批准任何内容。将可疑会话中的设备视为已受感染,直到被隔离或清理,从你信任的机器上进行调查,仅通过你已知的地址或自己导航到的官方网站联系钱包和交易所支持。Ethereum.org 的诈骗应对指南 是此阶段合理的起始清单。

弄清楚签署了什么以及已可见的内容

从记忆和截图中尽可能重建信息:账户和链、代币、请求的 dApp 或被授权者、提示中的数量或上限、如果你注意到的有效期,以及任何已存在的交易或授权事件。然后审查活跃授权和近期活动,牢牢记住之前的警告:空的授权列表并不能否定链下签名。

控制你实际可见的授权

如果你的钱包支持取消或使可疑授权无效,请遵循其官方步骤。撤销你不认识的活跃授权。如果仍存在实际风险,将风险资产转移到新账户,从已知干净的设备进行,因为从受感染的设备转移会给攻击者第二次机会。保留证据并向警方和涉及的平台报告事件。几天后会有“保证恢复”服务联系你,要明白这不是帮助到来,而是第二波攻击。图 3。根据你实际面临的情况,从未提交的签名到活跃额度,再到完全的设备或种子泄露,应对措施会分叉。原始图表基于 Ethereum.org 的诈骗应对指南和钱包供应商文档。

Change the signing policy, not only the wallet

对于团队和金库,持久的修复是程序性的:保留从不接触 dApp 的金库账户,以及仅持有任务所需资金的交互钱包。保持常设授权最小,在工作流程允许的情况下,优先选择有界上限而非无上限,并将授权审查安排在日历上,而非凭焦虑处理。任何高价值或不熟悉的签名请求,都需要第二人或独立渠道批准后才能签名。正如 SecureWorld 对 AI 驱动的钓鱼活动 的调查令人不安地表明,定制社会工程现在可以低成本大规模生产,而实时通话中的单个签名者正是其优化的目标。

推论的成本为零:任何人在未经请求的支持、销售或视频通话期间绝不签名,dApp 应通过书签访问而非粘贴链接。在你有工具选择的地方,优先选择支持可读意图、交易模拟、风险警报和明确支出限制的钱包和 dApp。

Safe acquisition is only the first trust boundary

值得将购买阶段与后续所有阶段分开,因为它们的失败方式不同。获取加密货币时,检查是老式的:故意访问官方域名、行为符合文档的支付流程、你控制并验证过的钱包目的地,以及存在的支持渠道。选择 安全购买加密货币 的路线,确定了第一个边界,除此之外无需其他。

合法的购买并不能为你后续连接的下一个 dApp 或通话中出现的任何被授权者和签名请求提供担保;每一个都是独立的信任决策,需要自己的验证。本文机制的范围说明:ERC-2612 授权适用于 EVM 风格网络上的兼容代币和合约。原生比特币不使用它们,这是你必须确切知道给定请求涉及哪种资产和链的另一个原因。

The safest key can still sign the wrong permission 

与所有这些接触后留存的规则可写在便利贴上:批准任何签名前,从可信显示屏上说出操作、代币、被授权者、数量或上限、有效期和链,用你自己的话。

无法说出全部六个?那么停止,通过你选择的独立渠道验证,让请求在其有效期内自动过期。攻击者的整个计划依赖于你批准一个你无法完全阅读的东西。拒绝这个“请求”,整个攻击链就无法建立。