恶意授权利用区块链标准(例如 ERC-20 和 ERC-721/ERC-1155)中的权限系统。它们诱骗用户授予攻击者对其资产的持续访问权限。
如 ERC-20 代币中的 approve(addressspender, uint 256 amount) 函数允许「支出者」(例如,DApp 或攻击者)从用户的钱包中转移指定数量的代币。NFT 中的 setApprovalForAll(addressoperator, bool approved) 函数授予「操作者」转移集合中所有 NFT 的权限。
这些批准是 DApp 的标准配置(例如,Uniswap 需要获得批准才能兑换代币),但攻击者会恶意利用它们。
攻击者获得授权的方式
欺骗性提示:钓鱼网站或受感染的 DApp 会提示用户签署一项标记为「钱包连接」、「代币兑换」或「NFT 认领」的交易。该交易实际上会调用攻击者地址的 approve 或 setApprovalForAll 方法。
无限批准:攻击者通常会请求无限的代币授权(例如,uint 256.max)或 setApprovalForAll(true),从而完全控制用户的代币或 NFT。
盲签:某些 DApp 让用户对不透明数据进行签名,这使得恶意行为难以被发现。即使是像 Ledger 这样的硬件钱包,显示的详细信息可能看似无害(例如「批准代币」),但却隐藏了攻击者的意图。
攻击者获得授权后可能会立即利用授权信息将代币 /NFT 转入其钱包,也可能等待(有时数周或数月)才盗取资产,以降低怀疑度。
钱包耗尽程序 / 恶意授权案例
Monkey Drainer 骗局主要发生于 2022 年和 2023 年初,它是一个臭名昭著的「耗尽程序即服务」网络钓鱼工具包,负责通过欺骗性网站和恶意智能合约窃取数百万加密货币(包括 NFT)。与依赖于收集用户助记词或密码的传统网络钓鱼不同,Monkey Drainer 通过恶意交易签名和智能合约滥用进行操作,使攻击者无需直接窃取凭证即可提取代币和 NFT。通过诱骗用户签署危险的链上批准,Monkey Drainer 在 2023 年初关闭之前,已在数百个钱包中窃取了超过 430 万美元的资金。

著名链上侦探 ZachXBT 揭露 Monkey Drainer 骗局
该工具包在低技能攻击者中颇受欢迎,并在地下 Telegram 和暗网社区中大力推广。它允许关联方克隆虚假的铸币网站,冒充真实项目,并配置后端以将已签名的交易转发到中心化提款合约。这些合约旨在利用代币权限,在用户不知情的情况下签署消息,通过 setApprovalForAll()(NFT)或 permit()(ERC-20 代币)等函数授予攻击者地址访问资产的权限。
值得注意的是,该交互流程避免了直接的网络钓鱼,受害者不会被要求提供私钥或助记词。相反,他们会与看似合法的 dApp 进行交互,通常是在带有倒计时或热门品牌宣传的铸币页面上。一旦连接成功,用户就会被提示签署一笔他们并不完全理解的交易,这些交易通常被通用的授权语言或钱包用户界面混淆掩盖。这些签名并非直接转移资金,而是授权攻击者随时进行转移。获得权限后,耗尽器合约可以在单个区块内执行批量提现。
