Uniswap Permit2签名钓鱼新手法 一次授权可能导致资产全损

robot
摘要生成中

揭示Uniswap Permit2签名钓鱼骗局:仅一个签名就可能导致资产被盗

黑客是Web3生态系统中令人生畏的存在。对项目方而言,开源代码意味着全球黑客都可能在寻找漏洞,写错一行代码就可能造成严重后果。对普通用户来说,每次链上交互或签名都可能使资产面临风险。因此安全问题一直是加密世界的痛点之一,区块链的不可逆特性也使被盗资产难以追回,这更突显了安全知识的重要性。

最近,一位研究人员发现了一种新型钓鱼手法,仅需签名就可能导致资产被盗。这种手法极其隐蔽难防,而且曾与Uniswap交互过的地址都可能面临风险。本文将详细介绍这种签名钓鱼手法,以帮助读者避免更多资产损失。

事件经过

事情源于一位朋友(小A)的资产被盗。与常见被盗方式不同,小A并未泄露私钥,也未与可疑合约交互。进一步调查发现,被盗USDT是通过Transfer From函数转移的,这意味着是第三方操作转移了资产,而非钱包私钥泄露。

交易细节显示:

  • 一个地址(fd51)将小A的资产转移到另一地址(a0c8)
  • 这个操作是与Uniswap的Permit2合约交互的

关键问题是:fd51地址如何获得了小A资产的权限?为何与Uniswap有关?

继续挖掘fd51地址的交互记录,发现在转移小A资产前,该地址还进行了一个Permit操作,且两个操作都与Uniswap的Permit2合约交互。

签名就被盗?揭秘Uniswap Permit2签名钓鱼骗局

Uniswap Permit2是2022年底推出的新合约,旨在实现跨应用的统一授权管理,提高用户体验并降低交易成本。它的工作原理是:用户只需授权给Permit2合约,所有集成Permit2的应用都可共享这个授权额度。

这种设计虽然提高了便利性,但也带来了风险。传统交互方式下,授权和资金转移都需要链上操作。而Permit2将用户操作变为链下签名,链上操作由中间角色完成。这虽然带来了诸多好处,但也使链下签名成为最容易被忽视的安全隐患。

调查显示,要触发这个漏洞,关键前提是钱包需已授权给Uniswap的Permit2合约。值得注意的是,只要在2023年后与Uniswap交互并授权给Permit2,就可能面临这一风险。

更令人担忧的是,Uniswap的Permit2合约默认请求无限授权额度。虽然MetaMask允许自定义金额,但多数用户可能直接选择最大或默认值。

签名就被盗?揭秘Uniswap Permit2签名钓鱼骗局

技术分析

Permit函数的核心逻辑是:

  1. 检查签名是否在有效期内
  2. 验证签名的真实性
  3. 如通过验证,则更新授权记录

verify函数会从签名信息中提取v、r、s数据,用于恢复签名地址并与代币所有者地址比对。如匹配,则继续执行_updateApproval函数。

_updateApproval函数会更新授权值,实现权限转移。之后,被授权方就可以调用transferFrom函数转移代币。

签名就被盗?揭秘Uniswap Permit2签名钓鱼骗局

如何防范

  1. 学会识别并理解签名内容,特别是Permit签名格式。使用安全插件可以帮助识别。

  2. 采用冷热钱包分离策略,将大额资产存放在冷钱包中。

  3. 谨慎授权Permit2合约,仅授权所需金额。如已授权,可使用安全插件取消。

  4. 了解所持代币是否支持permit功能,对支持的代币交易需格外谨慎。

  5. 如不幸被骗但仍有资产在其他平台,需制定完善的资产转移计划,可考虑使用MEV转移或寻求专业安全团队协助。

随着Permit2应用范围扩大,基于此的钓鱼攻击可能会更加普遍。这种签名钓鱼方式极其隐蔽且难以防范,暴露在风险中的地址也会越来越多。希望读者能够提高警惕,并将这些信息分享给更多人,共同维护资产安全。

签名就被盗?揭秘Uniswap Permit2签名钓鱼骗局

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 2
  • 分享
评论
0/400
熊市炒面师vip
· 7小时前
又见签名盗币?底部炸鱼都看累了
回复0
RunWithRugsvip
· 7小时前
又要折腾私钥了咯
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)