🎉 Gate xStocks 交易开启啦,现货、合约、Alpha齐上线!
📝 在Gate广场发帖,晒出你的交易体验或精彩截图,瓜分$1,000大奖池!
🎁 广场优质创作者5名,每人独享$100合约体验券!
🎉 帖文同步分享到X(推特),浏览量前十再得$50奖励!
参与方式:
1️⃣ 关注 @Gate广场_Official
2️⃣ 带 #Gate xStocks 交易体验# ,原创发帖(不少于20字,仅用活动标签)
3️⃣ 若分享到推特,请将链接提交表单:https://www.gate.com/questionnaire/6854
注:表单可多次提交,发布更多帖文可提升获奖机会!
📅 7月3日16:00—7月9日24:00(UTC+8)
详情:https://www.gate.com/announcements/article/45926
每一条体验,都有机会赢取大奖!快在Gate广场show出你的操作吧!
Permit2签名钓鱼新手法 资产安全风险需警惕
揭秘Uniswap Permit2签名钓鱼骗局
黑客是Web3生态中令人闻风丧胆的存在。对项目方而言,开源代码使他们战战兢兢,生怕一行错误代码留下漏洞。对个人用户来说,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界的痛点之一。由于区块链的特性,被盗资产几乎无法追回,所以具备安全知识尤为重要。
近期,一位研究者发现了一种新型钓鱼手法,仅需签名就可能导致资产被盗。这种手法极其隐蔽且难以防范,并且曾与某交易平台交互过的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以尽量避免更多资产损失。
事件经过
最近,一位朋友(小A)的钱包资产被盗。不同于常见被盗方式,小A并未泄露私钥也未与钓鱼网站合约交互。
区块链浏览器显示,小A钱包中的USDT是通过Transfer From函数转移的。这意味着是另一个地址操作将Token转走,而非钱包私钥泄露。
交易细节揭示了关键线索:
问题在于,这个地址是如何获得资产权限的?为何与某交易平台有关?
要调用Transfer From函数,前提是调用方需要拥有Token的额度权限(approve)。在该地址转走小A资产之前,还进行了一个Permit操作,两个操作都与某交易平台的Permit2合约交互。
Permit2是某交易平台2022年底推出的新合约,允许代币授权在不同应用间共享管理,旨在创造更统一、更具成本效益、更安全的用户体验。随着更多项目集成,Permit2有望在所有应用中实现Token批准标准化,降低交易成本并提高智能合约安全性。
Permit2的推出可能改变Dapp生态规则。传统方式下用户每次与Dapp交互都需授权,而Permit2可省去这一步骤,有效降低用户交互成本。Permit2作为用户和Dapp间的中间人,用户只需授权给Permit2合约,所有集成该合约的Dapp都可共享授权额度。
然而,这也是一把双刃剑。Permit2将用户操作变为链下签名,所有链上操作由中间角色完成。这使得即使用户钱包没有ETH也可使用其他Token支付Gas费或由中间角色报销。但链下签名也是用户最容易忽视的环节,大多数人不会仔细检查签名内容。
要使用这种钓鱼手法,关键前提是被钓鱼钱包需已授权Token给Permit2合约。目前只要在集成Permit2的Dapp或某交易平台上进行Swap,都需要授权给Permit2合约。
更可怕的是,无论Swap金额多少,Permit2合约都会默认让用户授权该Token全部余额额度。虽然钱包会提示自定义输入金额,但大多数人可能直接选择最大或默认值,而Permit2的默认值是无限额度。
这意味着,只要2023年后与某交易平台有过交互并授权给Permit2合约,就可能面临这个钓鱼骗局风险。
重点在于Permit函数,它可将用户授权给Permit2合约的Token额度转移给其他地址。黑客只要获得用户签名,就能获得用户钱包中Token权限并转移资产。
事件详细分析
Permit函数让用户可提前签署"合同",允许他人(spender)在未来使用一定数量代币。用户需提供签名证明"合同"真实性。
函数工作流程:
重点在于verify函数和_updateApproval函数。
verify函数从签名信息中获取v、r、s三个数据,用于恢复交易签名地址。合约将恢复的地址与传入的代币拥有者地址比较,相同则验证通过。
_updateApproval函数在通过签名校验后更新授权值,意味着权限发生转移。此时被授权方可调用transferfrom函数将代币转移到指定地址。
链上真实交易显示:
回顾小A交互记录,发现之前使用某交易平台时点击了默认授权额度,即几乎无限额度。
简单复盘:小A之前授权给Permit2无限USDT额度,后来不慎陷入黑客设计的签名钓鱼陷阱。黑客获得签名后在Permit2合约中进行Permit和Transfer From操作,转移走小A资产。目前Permit2合约似乎已沦为钓鱼天堂,这种钓鱼方式约两个月前开始活跃。
如何防范?
考虑到Permit2合约未来可能更普及,更多项目或集成进行授权共享,有效防范手段包括:
资产钱包与交互钱包分离: 建议将大量资产存放冷钱包,链上交互钱包仅保留少量资金,可大幅减少遇到钓鱼时的损失。
限制授权额度或取消授权: 在某交易平台Swap时,仅授权交互所需金额。虽然每次交互都需重新授权会增加成本,但可避免Permit2签名钓鱼风险。已授权用户可通过安全插件取消授权。
识别代币性质,关注是否支持permit功能: 未来可能有更多ERC20代币实现permit功能。需关注所持代币是否支持,若支持则交易操作需格外谨慎,严格检查每条未知签名。
被骗后如有代币存其他平台,需制定完善拯救计划: 若发现被骗但还有代币通过质押等方式存在其他平台,需谨慎提取转移。黑客可能随时监控地址余额,一旦出现代币就可能转移。应制定完善拯救流程,提取和转移需同步执行,可使用MEV转移或寻求专业安全团队协助。
未来基于Permit2的钓鱼可能增多,这种方式极其隐蔽难防。随Permit2应用范围扩大,暴露风险的地址也会增加。希望读者看到本文后能传播给更多人,避免更多人遭受损失。