Permit授权导致神鱼损失0.35亿刀带来的教训
DiscusFish,江湖人称神鱼,又名七彩神仙鱼,是一位在数字货币领域有着深厚影响力的创业者和投资人。他关于投资的理论被很多人传颂【神鱼:币圈是对性格认知的补偿,而不是努力的奖赏(点击这里链接可查看)】,但是最近深陷Permit签名资产被盗风波,,据称损失达到3500万,想想都肉疼。这事儿可不是小打小闹,简直就是链上钓鱼界的”吉尼斯纪录”了。今天就来好好聊聊这事儿,看看能学到啥教训。
一、3500万USDT被盗后神鱼首次发声
10月9号晚上8点多,神鱼DiscusFish@bitfish1终于在推特上发声了。他发的那条推文挺有意思:
“人生最不幸处,是偶一失言,而祸不及;偶一失谋,而事俸成;偶一恣行,而获小利。后乃视为故常,而恬不为意。则莫大之患,由此生矣。”
这话用大白话翻译一下就是:人生最倒霉的就是,你不小心说错一句话,结果啥事儿没有;不小心计划出了点岔子,反而成功了;不小心乱来一下,还赚了点小钱。后来就觉得这是常态了,也不当回事。结果可倒好,大祸就这么来了。
这哥们儿说的可太对了!在区块链这个圈子里,有时候你不经意间的一个操作可能就会带来天大的麻烦。这次神鱼的遭遇就是个血淋淋的例子啊。
二、3500万USDT是如何被盗的
说实话,这次神鱼被盗的方式,真是让人大开眼界。简单来说,就是因为一个叫”Permit”的授权机制出了问题。
具体咋回事呢?就是神鱼不小心签了个看起来没啥问题的授权,结果这个授权被黑客利用了。黑客拿着这个授权,直接把神鱼账户里价值3500万美元的USDT转走了。这么大一笔钱,就这么没了,想想都觉得可怕。
你可能会问,这么大的金额,神鱼咋就这么轻易地签了授权呢?这就要说到Permit这个机制了。
三、什么是Permit签名?提供那些方便,有哪些危害
Permit签名,说白了就是一种不用授权别人调用自己账户资金的方式。了解加密钱包交易的朋友应该都知道,一笔交易要成功,需要进行两次授权,第一次是授权交易内容,第二次是完成交易。在区块链上,每次交易都要花gas费,所以需要两笔gas费。但是Permit不用。
Permit是针对ERC-20标准下授权的一个扩展功能,原来是为了方便用户Defi挖矿时经常需要授权,避免操作麻烦并减少gas消耗的,简单来说就是你可以签名批准中介方来挪动你的资金,gas费由发起交易者,而不是钱包拥有者承担。
更详细内容参见:
大白话讲解Web3签名钓鱼底层逻辑:授权钓鱼、Permit与Permit2的区别
听起来挺方便是吧?
确实,Permit签名给咱们带来了不少好处:
省gas费:这年头gas费可不便宜,能省一笔是一笔。
操作快:不用等区块确认,签名就能生效。
用户体验好:不用每次都确认交易,感觉很流畅。
但是!这玩意儿也有大坑:
安全风险高:一不小心就可能把授权给了坏人。
用户容易大意:因为不花钱,很多人就不当回事,随便签。
钓鱼攻击多:坏人最喜欢利用这个来骗人了。
就拿神鱼这次的事来说,他可能就是因为觉得”反正不花钱,签了也没事”。结果倒好,一个签名就没了3500万美元。这代价也太大了吧!
四、OneKeyCN提供了哪些建议
说到这儿,咱们来看看OneKeyCN这个钱包团队给出的建议。他们在推特上发了一串,我觉得说得挺在理的:
首先,他们说用硬件钱包能不能完全避开Permit钓鱼?答案是既是也不是。
如果你就把硬件钱包当存钱罐,只存钱取钱不做别的,那肯定安全。但是如果你要用来做各种授权和交互,那还是有风险的。
OneKeyCN还特别提到,如果你已经把代币授权给了Permit合约(很多DeFi项目都默认用这个),那你就暴露在风险中了。他们把Permit合约比喻成一个”代币授权的中介”,听着挺高大上,其实就是个容易出问题的玩意儿。
他们还说了,虽然一个Permit签名只能搞走一种代币,但是如果私钥泄露了,那可就全完蛋了。
最后,OneKeyCN说他们正在开发新功能,让用户在硬件钱包上就能看到交易结果,提前预判风险。这倒是个好主意,就是不知道啥时候能用上。
五、Cos(余弦)有哪些建议?
接着咱们来看看安全专家Cos(余弦)的观点。他在推特上说的话,我觉得挺有意思的:
“技术细节讲过,继续炫技毫无意义。就看这样一个场景:你签了一笔并不完全看懂的签名,签名还不要gas,你以为不要gas,签名结果就不会上链,没想到…被钓鱼者上链了…几个小目标就没了或直接原地破产…”
这话说的,简直就是神鱼这次遭遇的真实写照啊!Cos还特别提到,这种情况在历史上出现过无数次,最近半个月就发生了两次。看来这真是个老大难问题啊。
Cos还提出了一个很关键的问题:到底是什么要改变?他觉得,可能需要从钱包和项目方两个角度来解决:
钱包方面:是不是可以对permit/permit2这类离线授权签名加些风控?
项目方面:能不能在合约层面不使用这种机制,前端页面也禁用?
他说得对啊,用户真的差那么点gas费吗?为了省这么点钱,搞不好把老本都赔进去了,太不值当了。
六、EVM废除Permit授权是否可行
说到这儿,咱们不得不考虑一个问题:能不能直接把Permit这个东西给废了?
说实话,这事儿没那么简单。Permit已经被广泛使用了,很多DeFi项目都在用。突然废除,肯定会影响到很多人。
而且,Permit本身的设计初衷是好的,就是为了提高用户体验,减少gas费用。问题主要出在使用方式上。
我觉得,与其完全废除,不如从以下几个方面入手:
加强用户教育:让大家都知道Permit的风险。
改进钱包设计:比如OneKeyCN说的那种预判功能。
项目方自律:能不用就不用,实在要用也要做好风险提示。
完善安全机制:比如设置授权额度上限,超过就要额外确认。
总之,这事儿不是一朝一夕能解决的。但是有一点是肯定的,那就是咱们每个人都得提高警惕。在区块链这个世界里,一个不小心可能就会损失惨重。
神鱼这次的教训,希望能让更多人意识到安全的重要性。别觉得自己聪明,就不会上当。记住,天外有天,人外有人,总有比你更厉害的黑客在盯着你的钱包呢。