钱包里的币被转走,很多时候不是私钥被破解,而是用户自己在某个页面上点了一次“确认”。公开安全资料把这类情况归到恶意授权:你在钓鱼网站或恶意合约上签了代币授权、NFT 全部授权或 Permit 类签名,对方地址从此可以在授权范围内转走资产,不需要再经过你同意。
理解恶意授权,关键不是记住更多骗术名称,而是弄清签名弹窗到底在授权什么,以及授权之后哪些事能补救、哪些不能。
授权和转账不是一回事
普通转账是把资产从你的地址转到另一个地址,签一次、动一笔。代币授权(Approve)则是允许某个地址使用你持有的某种代币,额度可能是你填的具体数量,也可能是“无限”。授权生效后,对方合约可以在额度内随时转走该代币,不需要你每次再确认。
NFT 的全部授权(setApprovalForAll)同理,一旦签了,对方可以转走你该系列的全部 NFT。资料把盲签、无限代币授权、全部 NFT 授权和 Permit 类离线签名列为风险较高的几类操作,原因是它们都可能让对方直接动资产。
一个常见的误解是“只是连接钱包,不会有事”。公开资料的解释是:单纯连接钱包只让网站看到你的地址和余额,本身不能转走资产;风险发生在连接之后的签名和授权环节。连接陌生网站仍然意味着离钓鱼更近,所以资料建议把存资产的主钱包和做交互的钱包分开。
Permit 签名:不花 Gas,但等同授权
Permit 和 Permit2 属于离线签名:钱包弹窗显示的是一段结构化数据,包含代币、被授权方、金额和截止时间,签名过程不上链、不花 Gas,看起来很像“登录验证”。但对方拿到签名后可以自己提交上链,效果等同于授权,随后转走代币。
这里有一个实际限制:Permit 签名在上链之前不会出现在授权检查列表里。也就是说,定期查授权列表能发现已经生效的 Approve,却不一定能提前看到你签过但对方还没提交的 Permit。资料给出的应对是,如果怀疑签过恶意 Permit,较稳妥的做法是把资产转到新钱包,而不是只依赖撤销列表。
撤销授权能做什么,不能做什么
撤销授权的原理是把授权额度设为零,NFT 全部授权则把授权状态改为否。操作上通常是通过授权检查工具或区块浏览器的授权检查页面,连接或输入地址、选择对应链,查看授权了哪些代币、给了哪个合约、额度多少,再对可疑或不再使用的授权发起撤销,并在钱包里确认。
资料明确了几条限制。第一,撤销本身是一笔链上交易,需要支付 Gas,不是点一下按钮就完成。第二,撤销只能阻止对方以后继续转走资产,追不回已经被转走的资产。第三,撤销完成后应刷新列表确认状态,避免以为撤销成功而实际没有上链。
还有一点容易被忽略:授权列表里出现 Uniswap、Aave 这类已知合约,通常是正常交互留下的授权;真正需要警惕的是被授权方是不明地址、你又说不清它属于谁的情况。
地址投毒:只核对首尾几位不够
地址投毒不涉及授权,但常和转账场景一起出现。公开资料的解释是,攻击者用工具生成一个首尾几位和你常用地址相同的假地址,再通过零金额转账或假代币转账,让这个地址出现在你的交易记录里。下次你从记录里复制地址时,可能就复制了假的。
对应的限制很直接:只核对地址前后几位不足以排除风险,需要核对完整地址或至少分段比对;更稳妥的做法是把常用地址存进地址簿,从地址簿选择,大额转账前先小额测试。看到莫名的零金额转账或同名假代币记录,可以作为已经被投毒的提示,但这只是可疑信号,不能反过来当成“没看到就安全”的保证。
被盗之后,资料支持的动作顺序
公开资料给出的处理顺序是:先在确认安全的设备上创建全新助记词的钱包,不要从旧助记词派生;优先转移剩余的高价值资产,需要 Gas 时直接打到新钱包,不要往被盗钱包里充值;在旧钱包撤销可疑授权,防止剩余代币继续被转走;如果怀疑设备有木马,旧设备不再用于钱包操作;保存钓鱼网址、交易哈希和聊天记录,并按当地规定报案。
资料同时提醒警惕二次诈骗:声称能“黑客追回”或“链上冻结”并要求先付费的,基本是骗子。这一条不是技术限制,而是被盗后常见的二次损失来源。
这些限制意味着什么
把公开资料的限制归纳起来,恶意授权的防线其实集中在签名之前:看清弹窗是连接、登录签名、代币授权、NFT 全部授权、Permit 还是转账,看不懂的签名直接拒绝;授权时只给需要的数量,确认被授权对象;常用网站走书签,不从来路不明的链接进入;定期检查授权并撤销不用的部分。
这些做法能降低风险,但不能保证安全。授权一旦上链就不可撤回,撤销需要 Gas 且只对以后生效,Permit 签名在生效前可能查不到,地址投毒则提醒我们核对地址不能只看首尾。理解这些边界,比记住“装什么工具”更有用。