# 揭秘Uniswap Permit2签名钓鱼骗局黑客是Web3生态中令人闻风丧胆的存在。对项目方而言,开源代码使他们战战兢兢,生怕一行错误代码留下漏洞。对个人用户来说,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界的痛点之一。由于区块链的特性,被盗资产几乎无法追回,所以具备安全知识尤为重要。近期,一位研究者发现了一种新型钓鱼手法,仅需签名就可能导致资产被盗。这种手法极其隐蔽且难以防范,并且曾与某交易平台交互过的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以尽量避免更多资产损失。### 事件经过最近,一位朋友(小A)的钱包资产被盗。不同于常见被盗方式,小A并未泄露私钥也未与钓鱼网站合约交互。区块链浏览器显示,小A钱包中的USDT是通过Transfer From函数转移的。这意味着是另一个地址操作将Token转走,而非钱包私钥泄露。交易细节揭示了关键线索:- 一个地址将小A的资产转移到另一地址- 这个操作是与某交易平台的Permit2合约交互的问题在于,这个地址是如何获得资产权限的?为何与某交易平台有关?要调用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)在未来使用一定数量代币。用户需提供签名证明"合同"真实性。函数工作流程:1. 检查当前时间是否超过签名有效期2. 验证签名真实性3. 若检查通过,更新记录允许他人使用代币重点在于verify函数和_updateApproval函数。verify函数从签名信息中获取v、r、s三个数据,用于恢复交易签名地址。合约将恢复的地址与传入的代币拥有者地址比较,相同则验证通过。_updateApproval函数在通过签名校验后更新授权值,意味着权限发生转移。此时被授权方可调用transferfrom函数将代币转移到指定地址。链上真实交易显示:- owner是小A钱包地址- Details中包含授权Token合约地址和金额等信息- Spender是黑客地址- sigDeadline是签名有效时间,signature是小A的签名信息回顾小A交互记录,发现之前使用某交易平台时点击了默认授权额度,即几乎无限额度。简单复盘:小A之前授权给Permit2无限USDT额度,后来不慎陷入黑客设计的签名钓鱼陷阱。黑客获得签名后在Permit2合约中进行Permit和Transfer From操作,转移走小A资产。目前Permit2合约似乎已沦为钓鱼天堂,这种钓鱼方式约两个月前开始活跃。### 如何防范?考虑到Permit2合约未来可能更普及,更多项目或集成进行授权共享,有效防范手段包括:1. 理解并识别签名内容:Permit签名格式通常包含Owner、Spender、value、nonce和deadline等关键信息。若想享受Permit2便利,必须学会识别此类签名格式。使用安全插件是不错选择。2. 资产钱包与交互钱包分离:建议将大量资产存放冷钱包,链上交互钱包仅保留少量资金,可大幅减少遇到钓鱼时的损失。3. 限制授权额度或取消授权:在某交易平台Swap时,仅授权交互所需金额。虽然每次交互都需重新授权会增加成本,但可避免Permit2签名钓鱼风险。已授权用户可通过安全插件取消授权。4. 识别代币性质,关注是否支持permit功能:未来可能有更多ERC20代币实现permit功能。需关注所持代币是否支持,若支持则交易操作需格外谨慎,严格检查每条未知签名。5. 被骗后如有代币存其他平台,需制定完善拯救计划:若发现被骗但还有代币通过质押等方式存在其他平台,需谨慎提取转移。黑客可能随时监控地址余额,一旦出现代币就可能转移。应制定完善拯救流程,提取和转移需同步执行,可使用MEV转移或寻求专业安全团队协助。未来基于Permit2的钓鱼可能增多,这种方式极其隐蔽难防。随Permit2应用范围扩大,暴露风险的地址也会增加。希望读者看到本文后能传播给更多人,避免更多人遭受损失。
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应用范围扩大,暴露风险的地址也会增加。希望读者看到本文后能传播给更多人,避免更多人遭受损失。