钱包授权中的permit 离线授权签名风险

网络安全6个月前更新 cryptobaby
315 0 0

本文作者:Cos(余弦)😶‍🌫️@evilcos。最后回复时间:9:38 AM · Mar 23, 2024


人生最惨之一:本以为点击了钓鱼网站的有关签名并没造成任何影响,甚至当时第一时间去检查了也没发现异常授权。钓鱼却在之后上链这笔 permit 离线授权签名,给目标地址的目标资产开了个授权风险敞口,但目标用户并没法知晓。于是有一天,目标用户提出相关再质押的 ETH 资产,钓鱼立即转走…

这位因此损失了 212 万美金。点击这里查看浏览器交易

钱包授权中的permit 离线授权签名风险

Cos(余弦):

用户时不时用@RevokeCash等授权检查工具(有些钱包也自带,如 Rabby、OKX Wallet 等)是可以主动发现这种风险敞口的。但是至今许多人还不会…所以这行业怎么变得更好?钱包们继续加油,解决一个看似极小的安全需求,却可能挽救无数损失。用户们也需要加油进化,踩坑是最好的教育,但希望大家少踩坑。

𝘁𝗮𝗿𝗲𝘀𝗸𝘆@taresky回复:
原推说的离线签名没法查吧,如果点过自己记不起就完蛋了

Cos(余弦):

其实很简单的,之前我说过,不过可能懂技术细节才更好理解,否则只需这样做:用 Revoke 检查授权时,还有个 tab 是签名检查,把怀疑可能被钓走 permit 离线授权签名的资产都取消下签名即可,如图我在取消我的 USDC permit 签名。注意下,这个取消功能一直会存在,这只是方便用户将之前不小心被钓走的 permit 签名失效的一种小技巧,所以取消签名做一次即可。

钱包授权中的permit 离线授权签名风险 钱包授权中的permit 离线授权签名风险 钱包授权中的permit 离线授权签名风险

这种小技巧有效的原因就在于,permit 离线签名授权是否有效是判断了 nonce,每次 permit 签名上链,对应资产的 nonce +1,这个 nonce 存于链上(对应资产的合约存储里)。所以,如果被钓鱼钓走了 permit 离线授权签名,这样及时操作后,是可以及时止损的。😎

Cos(余弦):

我非常懒,再再次分享了下 permit 离线授权签名及时止损的科普。对技术感兴趣的朋友自行去阅读 USDC/DAI 等有 permit 机制的合约代码,etherscan 上直接阅读就好。技术吃透,万事不愁。

另外,记住 approve 与 permit/permit2 授权的区别:

– approve 在受害者钱包地址可以看到授权痕迹
– permit/permit2 只能在钓鱼者钱包地址看到授权痕迹

原因也很简单,permit/permit2 这种是离线签名方式,受害者钱包地址不需要支付 gas,授权上链操作(含 gas)由钓鱼者钱包地址来提供。

 

© 版权声明

相关文章

暂无评论

暂无评论...