Uniswap Permit2签名钓鱼新骗局:一次签名资产即被盗

揭秘Uniswap Permit2签名钓鱼骗局:只要签名就会被盗

黑客一直是Web3生态系统中令人畏惧的存在。对项目方而言,代码开源的特性使他们在开发时如履薄冰,生怕一行代码错误就留下漏洞。对个人用户来说,如果不了解正在进行的操作含义,每次链上交互或签名都可能导致资产被盗。因此,安全问题一直是加密世界最棘手的问题之一。由于区块链的特性,一旦资产被盗几乎无法追回,所以在加密世界中掌握安全知识尤为重要。

最近,发现了一种近两个月开始活跃的新型钓鱼手法,只需签名就会被盗,手法极其隐蔽且难以防范。而且,曾经使用过Uniswap交互的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以尽量避免更多人遭受资产损失。

事件经过

最近,一位朋友(暂称小A)的钱包资产被盗。与常见被盗方式不同,小A并未泄露私钥,也没有与钓鱼网站的合约进行交互。

通过区块链浏览器可以看到,小A钱包被盗的USDT是通过Transfer From函数转移的。这意味着这笔被盗资产是由另一个地址操作转移的,而非钱包私钥泄露。

查询交易细节发现一些关键线索:

  • 尾号fd51的地址将小A的资产转移到了尾号a0c8的地址
  • 这个操作是与Uniswap的Permit2合约进行交互的

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

那么问题来了,尾号fd51的地址是如何获得这笔资产的权限的?为什么会与Uniswap有关?

首先需要知道,要成功调用Transfer From函数,前提是调用方需要拥有该Token的额度权限,即approve。当我们使用一些Dapp时,只要涉及资产转移就需要先进行授权(approve)操作,这样Dapp的合约才有权限对我们的资产进行转移。

答案就在尾号fd51地址的交互记录中。在该地址进行Transfer From转走小A资产之前,还进行了一个Permit操作,这两个操作的交互对象都是Uniswap的Permit2合约。

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

Uniswap Permit2合约是Uniswap在2022年底推出的新智能合约。根据官方说法,这是一个代币审批合约,允许在不同应用程序中共享和管理代币授权,旨在创造更统一、更具成本效益、更安全的用户体验。

随着越来越多项目与Permit2集成,它可以在所有应用程序中实现标准化Token批准。Permit2将通过降低交易成本来改善用户体验,同时提高智能合约的安全性。

Permit2的推出可能改变整个Dapp生态的游戏规则。简单来说,传统方法是每次与Dapp进行资产转移交互都需要授权,而Permit2可以省去这个步骤,有效降低用户交互成本,带来更好的用户体验。

Permit2作为用户和Dapp之间的中间人,用户只需将Token权限授权给Permit2合约,所有集成Permit2合约的Dapp都可以共享这个授权额度。对用户来说,减少了交互成本并提高了体验;对Dapp来说,用户体验的提升带来更多用户和资金,本是双赢局面。但这也可能是一把双刃剑,问题出在与Permit2的交互方式上。

在传统交互方式中,不管是授权还是资金转移,对操作用户来说都是链上交互。而Permit2将用户操作变为链下签名,所有链上操作都由中间角色(如Permit2合约和集成Permit2的项目方等)完成。这种方案的好处是,由于链上交互角色从用户转为中间角色,即使用户钱包里没有ETH也可以使用其他Token支付Gas费或完全由中间角色报销,取决于中间角色的选择。

虽然Permit2的出现可能改变未来Dapp的游戏规则,但这是一把很强的双刃剑。对用户而言,链下签名是最容易放松警惕的环节。比如当我们用钱包登录某些Dapp时需要签名连接,大多数人并不会仔细检查签名内容也不理解其含义,这正是最危险之处。

了解了Permit2合约后,回到小A的事件中就明白了为什么资产被盗都是与Permit2合约交互。重现这个Permit2签名钓鱼手法,首先一个关键前提是被钓鱼的钱包需要有Token授权给Uniswap的Permit2合约。目前只要在与Permit2集成的Dapp或Uniswap上进行Swap,都需要授权给Permit2合约。

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

另一个令人担忧的点是,无论要Swap的金额多少,Uniswap的Permit2合约都会默认让用户授权该Token全部余额的额度。虽然MetaMask允许自定义输入金额,但大多数人可能直接点击最大或默认值,而Permit2的默认值是无限额度。

这意味着,只要你在2023年之后与Uniswap有过交互并授权额度给Permit2合约,就可能暴露在这个钓鱼骗局的风险中。

关键在于之前在尾号fd51地址中与Permit2合约交互的Permit函数。简单说,这个函数利用你的钱包将你授权给Permit2合约的Token额度转移给其他地址。也就是说,只要获得你的签名,黑客就可以拿到你钱包中Token的权限并转移你的资产。

事件详细分析

permit函数:

permit函数类似于在线签署合同。它允许你(PermitSingle)提前签署一个"合同",允许其他人(spender)在未来某个时间使用你的一些代币。

你还需要提供签名(signature),就像在纸质合同上签名,证明这个"合同"确实是你签署的。

函数工作流程:

  1. 检查当前时间是否超过签名有效期(sigDeadline)。如超过有效期,程序直接停止。
  2. 检查签名真实性。用特殊方法(signature.verify)检查签名,确保未被伪造。
  3. 如所有检查通过,程序更新记录,记下你已允许其他人使用你的部分代币。

重点主要在verify函数和_updateApproval函数。

verify函数:

verify函数从签名信息参数中获取v、r、s三个数据。v、r、s是交易签名的值,可用于恢复交易签名地址。合约恢复交易签名地址后,与传入的代币拥有者地址比较,如相同则验证通过,继续调用_updateApproval函数;如不同则回滚交易。

_updateApproval函数:

通过签名校验后,调用_updateApproval函数更新授权值,意味着你的权限发生转移。此时,被授权方可调用transferfrom函数将代币转移到指定地址。

查看链上真实交易细节可发现:

  • owner是小A的钱包地址(尾号308a)
  • Details中可见授权的Token合约地址(USDT)和金额等信息
  • Spender是尾号fd51的黑客地址
  • sigDeadline是签名有效时间,signature是小A的签名信息

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

回顾小A的交互记录,发现小A之前使用Uniswap时点击了默认授权额度,即几乎无限的额度。

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

简单复盘:小A之前使用Uniswap时授权给Uniswap Permit2无限的USDT额度。小A在钱包操作时不慎陷入黑客设计的Permit2签名钓鱼陷阱。黑客获得小A签名后,在Permit2合约中进行Permit和Transfer From两个操作,转移了小A的资产。目前观察到Uniswap的Permit2合约已成为钓鱼天堂,这种Permit2签名钓鱼似乎在两个月前开始活跃。

交互记录中可见,大部分是被标记的钓鱼地址(Fake_Phishing),不断有人上当。

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

如何防范?

考虑到Uniswap Permit2合约可能在未来更加普及,更多项目将集成Permit2合约进行授权共享,有效的防范手段包括:

1. 理解并识别签名内容:

Permit的签名格式通常包含Owner、Spender、value、nonce和deadline等关键格式。如果想享受Permit2带来的便利和低成本,一定要学会识别这种签名格式。(下载安全插件是个不错的选择)

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

2. 分离资产存储和交互钱包:

如果拥有大量资产,建议将资产存放在冷钱包中,链上交互的钱包只保留少量资金,可大幅减少遇到钓鱼骗局时的损失。

3. 限制授权给Permit2合约的额度或取消授权:

在Uniswap上进行Swap时,只授权交互所需金额。虽然每次交互都需要重新授权会增加一些交互成本,但可避免遭受Permit2的签名钓鱼。如果已经授权了额度,可以使用相应的安全插件进行取消授权。

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

4. 识别代币性质,了解是否支持permit功能:

未来可能会有越来越多ERC20代币使用该扩展协议实现permit功能。需要关注自己持有的代币是否支持该功能,如果支持,对该代币的交易或操作要格外小心,严格检查每条未知签名是否是对permit函数的签名。

5. 被骗后如有代币存在其他平台,需制定完善的拯救计划:

发现被诈骗,代币被黑客转移后,如果还有代币通过质押等方式存在其他平台上需要提取并转移到安全地址,要知道黑客可能随时监控你的地址代币余额。因为他拥有你的签名,只要被盗地址上出现代币,黑客就可以直接转移。这时需要制定完善的代币拯救过程,在提取代币和转移代币两个过程需要一起执行,不让黑客交易插入其中。可以使用MEV转移,这需要一些区块链知识和编程能力,也可以寻求专业安全公司的帮助,利用交易抢跑脚本来实现。

未来基于Permit2的钓鱼可能会越来越多,这种签名钓鱼方式极其隐蔽且难以防范。随着Permit2应用范围扩大,暴露在风险中的地址也会增多。希望看到本文后能够传播给更多人,避免更多人遭受损失。

UNI-3.6%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
MetaLord420vip
· 07-31 15:37
又被盗了 我慌得一批
回复0
代码审计姐vip
· 07-31 15:37
只能说合约跟子弹一样不长眼 一不小心就资产归零了
回复0
月光玩家vip
· 07-31 15:29
区块链大头都没了还玩啥
回复0
反向指标哥vip
· 07-31 15:27
套个钱谁跑得快
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)