# 揭秘:Uniswap Permit2签名钓鱼骗局黑客是Web3生态中令人恐惧的存在。对项目方而言,代码开源意味着全球黑客都可能盯上你,一旦出现安全漏洞后果难以承担。对个人用户来说,如果不了解自己正在进行的操作,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界最棘手的问题之一。由于区块链的特性,一旦资产被盗几乎无法追回,所以在加密世界中掌握安全知识尤为重要。近期,一种新型钓鱼手法开始活跃,只要签名就会被盗,手法极其隐蔽且难以防范。曾与Uniswap交互过的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以避免更多资产损失。## 事件经过最近,一位朋友(暂称小A)的钱包资产被盗。与常见被盗方式不同,小A并未泄露私钥,也未与钓鱼网站的合约交互。区块链浏览器显示,小A钱包中的USDT是通过Transfer From函数被转移的。这意味着另一个地址操作将Token转走,而非钱包私钥泄露。交易细节显示:- 尾号fd51的地址将小A的资产转移到尾号a0c8的地址- 这个操作是与Uniswap的Permit2合约交互的关键问题是:尾号fd51的地址如何获得这笔资产的权限?为什么与Uniswap有关?进一步调查发现,在转移小A资产之前,尾号fd51的地址还进行了一个Permit操作,且这两个操作的交互对象都是Uniswap的Permit2合约。Uniswap Permit2是2022年底推出的新合约,允许代币授权在不同应用中共享和管理,旨在创造更统一、更具成本效益、更安全的用户体验。随着更多项目集成Permit2,它可以在所有应用中实现标准化Token批准,降低交易成本并提高智能合约安全性。Permit2作为用户和Dapp之间的中间人,用户只需将Token权限授权给Permit2合约,所有集成Permit2的Dapp都可共享这个授权额度。这减少了用户交互成本,提升了体验。但这也是把双刃剑,问题出在与Permit2的交互方式上。传统交互方式中,授权和资金转移都是用户的链上交互。而Permit2将用户操作变为链下签名,所有链上操作由中间角色完成。这带来的好处是,即使用户钱包没有ETH也可使用其他Token支付Gas费或由中间角色报销。然而,链下签名是用户最容易忽视的环节。许多人不会仔细检查签名内容,也不理解其含义,这是最危险之处。要触发这个Permit2签名钓鱼,关键前提是被钓鱼的钱包需已授权Token给Uniswap的Permit2合约。目前只要在集成Permit2的Dapp或Uniswap上进行Swap,都需要授权给Permit2合约。更可怕的是,无论Swap金额多少,Uniswap的Permit2合约都会默认让用户授权该Token全部余额。虽然MetaMask允许自定义输入金额,但大多数人可能直接选择最大或默认值,而Permit2的默认值是无限额度。这意味着,只要你在2023年后与Uniswap有过交互并授权额度给Permit2合约,就可能面临这个钓鱼骗局的风险。关键在于Permit函数,它允许黑客利用你的签名将你授权给Permit2合约的Token额度转移给其他地址。只要获得你的签名,黑客就能获取你钱包中Token的权限并转移资产。## 事件详细分析permit函数的工作流程:1. 检查当前时间是否超过签名有效期(sigDeadline)2. 验证签名真实性3. 如通过检查,更新记录允许其他人使用你的代币重点在于verify函数和_updateApproval函数。verify函数从签名信息中获取v、r、s三个数据,用于恢复交易签名地址。合约将恢复的地址与传入的代币拥有者地址比较,若相同则验证通过,继续调用_updateApproval函数;若不同则回滚交易。_updateApproval函数在通过签名校验后更新授权值,意味着你的权限发生转移。此时被授权方可调用transferfrom函数将代币转移到指定地址。链上真实交易显示:- owner是小A的钱包地址(尾号308a)- Details中可见授权的Token合约地址(USDT)和金额等信息- Spender是尾号fd51的黑客地址- sigDeadline是签名有效时间,signature是小A的签名信息回顾小A的交互记录发现,他之前使用Uniswap时点击了默认的授权额度,即几乎无限的额度。简单复盘:小A此前使用Uniswap时授权给Permit2无限的USDT额度。后来操作钱包时不慎落入黑客设计的Permit2签名钓鱼陷阱。黑客获得小A签名后,在Permit2合约中进行Permit和Transfer From操作,转移走小A资产。目前Uniswap的Permit2合约似乎已成为钓鱼温床,这种签名钓鱼约两个月前开始活跃。## 如何防范?考虑到Uniswap Permit2合约未来可能更加普及,更多项目可能集成它进行授权共享,有效的防范手段包括:1. 理解并识别签名内容: Permit签名格式通常包含Owner、Spender、value、nonce和deadline等关键信息。如果想享受Permit2带来的便利和低成本,必须学会识别这种签名格式。使用安全插件是个不错的选择。2. 资产钱包和交互钱包分离使用: 如持有大量资产,建议将主要资产存放在冷钱包中,链上交互钱包只保留少量资金,可大幅降低遇到钓鱼骗局时的损失。3. 限制授权给Permit2合约的额度或取消授权: 在Uniswap上Swap时,只授权交互所需的金额。虽然每次交互都需重新授权会增加成本,但可避免遭受Permit2签名钓鱼。如已授权额度,可使用安全插件取消授权。4. 识别代币性质,了解是否支持permit功能: 未来可能有更多ERC20代币实现permit功能。需关注自己持有的代币是否支持该功能,如支持则对交易或操作要格外谨慎,严格检查每条未知签名是否针对permit函数。5. 若被骗后还有代币存在其他平台,需制定完善的拯救计划: 发现被诈骗后,若还有代币通过质押等方式存在其他平台需提取转移,要注意黑客可能随时监控你的地址余额。制定完善的代币拯救过程,确保提取和转移同时执行,防止黑客交易插入。可考虑使用MEV转移或寻求专业安全公司如Beosin团队协助。未来基于Permit2的钓鱼可能会越来越多。这种签名钓鱼方式极其隐蔽且难防,随着Permit2应用范围扩大,暴露在风险中的地址也会增加。希望读者看到本文后能够传播给更多人,避免更多人遭受损失。
Uniswap Permit2签名钓鱼新骗局:识别风险与防范指南
揭秘:Uniswap Permit2签名钓鱼骗局
黑客是Web3生态中令人恐惧的存在。对项目方而言,代码开源意味着全球黑客都可能盯上你,一旦出现安全漏洞后果难以承担。对个人用户来说,如果不了解自己正在进行的操作,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界最棘手的问题之一。由于区块链的特性,一旦资产被盗几乎无法追回,所以在加密世界中掌握安全知识尤为重要。
近期,一种新型钓鱼手法开始活跃,只要签名就会被盗,手法极其隐蔽且难以防范。曾与Uniswap交互过的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以避免更多资产损失。
事件经过
最近,一位朋友(暂称小A)的钱包资产被盗。与常见被盗方式不同,小A并未泄露私钥,也未与钓鱼网站的合约交互。
区块链浏览器显示,小A钱包中的USDT是通过Transfer From函数被转移的。这意味着另一个地址操作将Token转走,而非钱包私钥泄露。
交易细节显示:
关键问题是:尾号fd51的地址如何获得这笔资产的权限?为什么与Uniswap有关?
进一步调查发现,在转移小A资产之前,尾号fd51的地址还进行了一个Permit操作,且这两个操作的交互对象都是Uniswap的Permit2合约。
Uniswap Permit2是2022年底推出的新合约,允许代币授权在不同应用中共享和管理,旨在创造更统一、更具成本效益、更安全的用户体验。随着更多项目集成Permit2,它可以在所有应用中实现标准化Token批准,降低交易成本并提高智能合约安全性。
Permit2作为用户和Dapp之间的中间人,用户只需将Token权限授权给Permit2合约,所有集成Permit2的Dapp都可共享这个授权额度。这减少了用户交互成本,提升了体验。但这也是把双刃剑,问题出在与Permit2的交互方式上。
传统交互方式中,授权和资金转移都是用户的链上交互。而Permit2将用户操作变为链下签名,所有链上操作由中间角色完成。这带来的好处是,即使用户钱包没有ETH也可使用其他Token支付Gas费或由中间角色报销。
然而,链下签名是用户最容易忽视的环节。许多人不会仔细检查签名内容,也不理解其含义,这是最危险之处。
要触发这个Permit2签名钓鱼,关键前提是被钓鱼的钱包需已授权Token给Uniswap的Permit2合约。目前只要在集成Permit2的Dapp或Uniswap上进行Swap,都需要授权给Permit2合约。
更可怕的是,无论Swap金额多少,Uniswap的Permit2合约都会默认让用户授权该Token全部余额。虽然MetaMask允许自定义输入金额,但大多数人可能直接选择最大或默认值,而Permit2的默认值是无限额度。
这意味着,只要你在2023年后与Uniswap有过交互并授权额度给Permit2合约,就可能面临这个钓鱼骗局的风险。
关键在于Permit函数,它允许黑客利用你的签名将你授权给Permit2合约的Token额度转移给其他地址。只要获得你的签名,黑客就能获取你钱包中Token的权限并转移资产。
事件详细分析
permit函数的工作流程:
重点在于verify函数和_updateApproval函数。
verify函数从签名信息中获取v、r、s三个数据,用于恢复交易签名地址。合约将恢复的地址与传入的代币拥有者地址比较,若相同则验证通过,继续调用_updateApproval函数;若不同则回滚交易。
_updateApproval函数在通过签名校验后更新授权值,意味着你的权限发生转移。此时被授权方可调用transferfrom函数将代币转移到指定地址。
链上真实交易显示:
回顾小A的交互记录发现,他之前使用Uniswap时点击了默认的授权额度,即几乎无限的额度。
简单复盘:小A此前使用Uniswap时授权给Permit2无限的USDT额度。后来操作钱包时不慎落入黑客设计的Permit2签名钓鱼陷阱。黑客获得小A签名后,在Permit2合约中进行Permit和Transfer From操作,转移走小A资产。目前Uniswap的Permit2合约似乎已成为钓鱼温床,这种签名钓鱼约两个月前开始活跃。
如何防范?
考虑到Uniswap Permit2合约未来可能更加普及,更多项目可能集成它进行授权共享,有效的防范手段包括:
资产钱包和交互钱包分离使用: 如持有大量资产,建议将主要资产存放在冷钱包中,链上交互钱包只保留少量资金,可大幅降低遇到钓鱼骗局时的损失。
限制授权给Permit2合约的额度或取消授权: 在Uniswap上Swap时,只授权交互所需的金额。虽然每次交互都需重新授权会增加成本,但可避免遭受Permit2签名钓鱼。如已授权额度,可使用安全插件取消授权。
识别代币性质,了解是否支持permit功能: 未来可能有更多ERC20代币实现permit功能。需关注自己持有的代币是否支持该功能,如支持则对交易或操作要格外谨慎,严格检查每条未知签名是否针对permit函数。
若被骗后还有代币存在其他平台,需制定完善的拯救计划: 发现被诈骗后,若还有代币通过质押等方式存在其他平台需提取转移,要注意黑客可能随时监控你的地址余额。制定完善的代币拯救过程,确保提取和转移同时执行,防止黑客交易插入。可考虑使用MEV转移或寻求专业安全公司如Beosin团队协助。
未来基于Permit2的钓鱼可能会越来越多。这种签名钓鱼方式极其隐蔽且难防,随着Permit2应用范围扩大,暴露在风险中的地址也会增加。希望读者看到本文后能够传播给更多人,避免更多人遭受损失。