彻底解决 Permit 钓鱼,OneKey 将如何推进?

要点总结
• 大多数 ERC-20 资产被盗事件,都是由 Permit / Permit2 签名钓鱼造成。
• Permit 本是为减少 Gas 设计,却被钓鱼网站用来“借刀杀人”。
• “盲签”问题是根源,用户往往看不清交易详情就匆忙签名。
• OneKey App 与 Pro 已支持 Ethereum 与 EVM L2 的 Permit 风险提醒。
• ABI 解析将逐步上线,用户可在签名前查看转账地址、金额、合约调用方法等。
• OneKey 未来将支持硬件钱包本地 ABI 解析、二维码辅助验证等多重确认手段。
• 也将提供动态监控与批量取消授权机制,应对突发合约安全事件。
这是一场没有硝烟的战争。
而我们必须打赢、终将打赢。
追根溯源,Permit 的本意是好的。而现在,利用它便利性的钓鱼,成为了链上噩梦之一。
ScamSniffer @realScamSniffer 公布了几次报告,所有网络中, 90% 的被钓鱼资产为 ERC-20 类代币。而这其中主要的钓鱼方式就是 Permit / Permit2 钓鱼签名。惨不忍睹。
不开玩笑,今年绝大部分你听说过的个人用户巨额钓鱼,都是 Permit 钓鱼。
一、恐怖片
实话说,早期以太坊玩家过着烧钱的苦日子。
每次和不同的合约交互,都需要付 Gas 去授权代币, Swap 或者 NFT 买卖需要两笔交易才能完成。
而现在,Permit 的使用已经完全普及各个 Defi 项目。你只需要将代币授权给 Permit/Permit2 这个「中介」合约一次。
之后,合约需要调用代币,只需要你的一个签名,节省了 Gas 和时间。
坏消息是,这个便利性变成了「借刀杀人」的恐怖片。
假官网、假空投、假土狗泛滥猖獗、张牙舞爪。其绝大部分都在打开网站的第一时间,就会很着急地弹出钱包、让你「签名登录,从而骗取 Permit 离线签名。
假如软件钱包/硬件钱包没有任何提醒,或者你忽视了潜在的风险,代币权限就被一键钓走了。
黑客得手后,便可以随时用这个签名转走对应的资产。很多时候被盗之后,你甚至没发现是因为这个小小的签名。
各种质押代币是重灾区,经常一钓就是大的,大到震惊全网。
这一切本可以被避免,只要用户得到足够的信息和警告。
二、核心的矛与盾
这个问题的本质就是「盲签(Blind Singing)」。Permit 钓鱼,仅仅只是其带来的风险的一个子集。
「盲签」意味着,你在签名与智能合约交互的时候,看到的是一堆二进制或十六进制乱码的「天书」,而不是清晰地告诉你签名目的和资产可能的变动情况——如转账金额、接收地址、调用的合约和方法等。
这种情况下签名,你可能会被误导,从而被诈骗。
要读懂「天书」,需要字典。而这个字典就是 ABI(Application Binary Interface,应用二进制接口)。它告诉钱包如何解释分析合约中的方法和参数,从一大串字符中提取有用的信息。
硬件钱包的好处在于,即使手机电脑被黑,黑客也无法拿到你的私钥权限,无法物理操作你的资金。但这也导致其受到性能、断网隔离等限制,在解析「盲签」上面临更大的挑战。
三、开诚布公:OneKey 如何推进?
「盲签」的问题我们必须解决,终将解决。
(1)现在完成时
我们先从最大的祸害,现在绝大部分黑客都在使用的「Permit 钓鱼」快速入手。
黑客在钓鱼的时候可能使用的调用方法有「Permit/PermitBatch/PermitBatchTransferFrom/PermitSingle/PermitTransferFrom」,这些都是需要能被解析出来的内容。
现在,OneKey 的 App 软件钱包和 OneKey Pro 硬件钱包,都已支持以太坊和所有 EVM L2 的所有 Permit 类型风险提醒。
假如你签名的是 Permit 授权类型,在你签名之前,我们将会进行一个【高亮提醒】并确认。Classic 1s 也在快速跟进。
和前面提到「以为是普通的登录签名,结果却是签了 Permit 授权导致被盗」的情况说再见吧。
此外,我们已经支持初始授权代币给 Permit/Permit2 合约时,设置「用多少授权多少」。
(2)App 的现在进行时
11 月底(也就是两三周的时间),App 将会渐进式更新的签名交易数据 ABI 解析。
要把所有的签名都能解析,这其实是一个巨大的体力工作。这里有个以太坊签名数据库(www.[删掉]4byte.[删掉]directory),收集了高达 1,350,091 个不同的签名。
目前,我们从以太坊最近 100 万条交易,统计出来了 Top 1000 个合约方法。我们将收集足够多的 ABI(目前也有很多现有的裤),争取 100% 覆盖。这也将涵盖各个 EVM L2。
我们将优先处理高风险的 Permit 类型,之后再扩展到全部。
不管是使用硬件钱包还是仅使用软件钱包,你都能 App 上读取签名目的和资产变动情况,如转账或授权金额、调用的合约和方法等。
此外,OneKey App 将在这之上进行额外的检测。一个是对交互的合约地址进行「是否交互过」检测。帮助你确认这个是你交互过的可信合约。另一个是进行「合约风险监测」,这一块我们将与 BlockAid、ScamSniffer、GoPlus 等知名机构合作。即使是信赖的大项目合约因为黑客出现风险时,也可以第一时间在交互确认前得到警告。
(3)硬件钱包的现在进行时
有了前面的工作,我们将会实现在硬件钱包本地的解析。这样你能够在 App 和和硬件钱包离线本地进行两次确认,更安心。
这意味着,我们将会把 ABI 内置在硬件钱包中,并及时更新各种智能合约新的 ABI。
与 App 同样地,钓鱼重灾区「Permit」系列签名解析,会是我们重点优先推出的对象。
对于无法解析的,我们会警告,并允许用户设置禁止签这种类型的交易,以此倒逼各位新的项目方对 ABI 标注文件进行公布。
同时,我们也建议各位手握大额资产 Permit 调用权限的项目(尤其是质押类),除了保护好自己的合约多签权限之外,也增加类似 T+1 时间锁的功能,让用户即使被钓鱼也有时间反应和阻止。
关于 ABI 的收集,我们的友商 Ledger 在这一块是先锋者,他们推出了「Clear Signing」计划。
主要是在这个 GitHub (https://github.\[删除\]com/LedgerHQ/clear-signing-erc7730-registry),由第三方上传 ABI 标注文件然后他们进行审核,通过后会更新到固件中进行解析。
(4)其他更进一步的升级
a、支持展示硬件钱包的交易数据,进行第三方解析。
对安全要求更高的用户,有时候希望多方认证确认。
我们将通过硬件钱包屏幕展示出动态二维码,在二维码中编码了完整的待签名数据。或者是通过蓝牙加密传输的方式。
用户可以通过外部服务(比如一个第三方的 Ap)扫描该二维码,解析待签名内容,展示给用户。用户核对后,在硬件钱包上确认签名。
b、支持多帐户批量取消授权 & 动态监控。
当项目的合约发生权限问题时,黑客调用 Permit 转移资产往往需要一定的时间。不少用户是来得及进行取消授权拯救自己的资产的。当然,更好的情况是用户自己定期取消授权。
我们正在进行这方面的研发,针对突发风险的合约,针对目标用户进行推送预警,并提醒用户批量取消。不过这个服务消耗资源很大,我们会考虑使用订阅的模式,面向深度用户。
安全不是一个结果,而是一个动态博弈的漫漫长路。而这条路上,我们充满了决心。
共勉。