# 揭秘Uniswap Permit2签名钓鱼骗局黑客是Web3生态中令人恐惧的存在。对项目方而言,代码开源意味着全球黑客都可能盯上你,写错一行代码就可能留下漏洞,安全事故后果严重。对个人用户来说,如果不了解自己的操作含义,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界最棘手的问题之一。由于区块链的特性,一旦资产被盗几乎无法追回,所以在加密世界中具备安全知识尤为重要。近期发现了一种近两个月开始活跃的新钓鱼手法,只要签名就会被盗,手法极其隐蔽且难以防范,并且用过Uniswap交互的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以尽量避免更多的资产损失。### 事件经过最近,一位朋友(小A)钱包里的资产被盗。与常见被盗方式不同,小A并未泄露私钥也没有与钓鱼网站的合约交互。调查发现,小A钱包被盗的USDT是通过Transfer From函数转移的,这意味着是另一个地址操作将Token转走的,而非钱包私钥泄露。通过查询交易细节,发现关键线索:- 一个地址将小A的资产转移到另一个地址- 这个操作是与Uniswap的Permit2合约交互的问题在于,这个地址是如何获得资产权限的?为什么与Uniswap有关?调用Transfer From函数的前提是调用方需要拥有Token的额度权限(approve)。答案在于执行Transfer From前,该地址还进行了一个Permit操作,两个操作都与Uniswap的Permit2合约交互。Uniswap Permit2合约是Uniswap在2022年底推出的新合约,允许代币授权在不同应用程序中共享和管理,旨在创造更统一、更具成本效益、更安全的用户体验。随着更多项目集成Permit2,它可以在所有应用中实现标准化Token批准,通过降低交易成本改善用户体验,同时提高智能合约安全性。Permit2的推出可能改变整个Dapp生态的游戏规则。传统方法中,每次与Dapp进行资产转移交互都需要单独授权。而Permit2可以省去这个步骤,有效降低用户交互成本,带来更好的用户体验。Permit2作为用户和Dapp间的中间人,用户只需将Token权限授权给Permit2合约,所有集成Permit2的Dapp都可共享这个授权额度。这本是双赢局面,但也可能是双刃剑,问题出在与Permit2的交互方式上。传统交互方式中,授权和资金转移对用户而言都是链上交互。Permit2将用户操作变为链下签名,所有链上操作由中间角色(如Permit2合约和集成Permit2的项目方)完成。这带来的好处是,即使用户钱包没有ETH也可使用其他Token支付Gas费或由中间角色报销。然而,链下签名是用户最容易放松警惕的环节。许多人在用钱包登录Dapp时不会仔细检查签名内容,也不理解其含义,这是最危险之处。要使用这个Permit2签名钓鱼手法,关键前提是被钓鱼的钱包需要有Token授权给Uniswap的Permit2合约。目前只要在与Permit2集成的Dapp或Uniswap上进行Swap,都需要授权给Permit2合约。更可怕的是,无论Swap金额多少,Uniswap的Permit2合约都会默认让用户授权该Token全部余额的额度。尽管MetaMask允许自定义输入金额,但大多数人可能直接选择最大或默认值,而Permit2的默认值是无限额度。这意味着,只要你在2023年之后与Uniswap有过交互并授权额度给Permit2合约,就可能暴露在这个钓鱼骗局的风险之下。重点在于Permit函数,它可以利用你的钱包将授权给Permit2合约的Token额度转移给其他地址。只要获得你的签名,黑客就可以获取你钱包中Token的权限并转移你的资产。### 如何防范?考虑到Uniswap Permit2合约可能在未来更加普及,更多项目可能集成Permit2合约进行授权共享,有效的防范手段包括:1. 理解并识别签名内容: Permit的签名格式通常包含Owner、Spender、value、nonce和deadline等关键字段。如果想享受Permit2带来的便利和低成本,必须学会识别这种签名格式。使用安全插件是个不错的选择。2. 分离资产存储和交互钱包: 建议将大量资产存储在冷钱包中,链上交互的钱包只存放少量资金,可大幅减少遇到钓鱼骗局时的损失。3. 限制授权额度或取消授权: 在Uniswap上进行Swap时,只授权所需交互的金额。虽然每次交互都需要重新授权会增加一些成本,但可以避免遭受Permit2签名钓鱼。如果已经授权了额度,可以使用安全插件进行取消授权。4. 识别代币性质,了解是否支持permit功能: 随着越来越多ERC20代币可能使用该扩展协议实现permit功能,需要关注自己持有的代币是否支持该功能。如果支持,对该代币的交易或操作要格外小心,严格检查每条未知签名是否涉及permit函数。5. 制定完善的资产拯救计划: 如果发现被诈骗,但还有代币通过质押等方式存在其他平台,需要提取并转移到安全地址时,要注意黑客可能随时监控你的地址余额。由于黑客拥有你的签名,只要被盗地址上出现代币,就可能被立即转移。需要制定周密的代币拯救计划,确保提取和转移过程同步执行,不给黑客交易插入的机会。可以考虑使用MEV转移或寻求专业安全公司的帮助。未来基于Permit2的钓鱼可能会越来越多,这种签名钓鱼方式极其隐蔽且难以防范。随着Permit2应用范围扩大,暴露在风险中的地址也会增多。希望读者能将这些信息传播给更多人,避免更多人遭受损失。
Uniswap Permit2新型签名钓鱼手法:机制、风险与防范
揭秘Uniswap Permit2签名钓鱼骗局
黑客是Web3生态中令人恐惧的存在。对项目方而言,代码开源意味着全球黑客都可能盯上你,写错一行代码就可能留下漏洞,安全事故后果严重。对个人用户来说,如果不了解自己的操作含义,每次链上交互或签名都可能导致资产被盗。因此安全问题一直是加密世界最棘手的问题之一。由于区块链的特性,一旦资产被盗几乎无法追回,所以在加密世界中具备安全知识尤为重要。
近期发现了一种近两个月开始活跃的新钓鱼手法,只要签名就会被盗,手法极其隐蔽且难以防范,并且用过Uniswap交互的地址都可能面临风险。本文将对这种签名钓鱼手法进行科普,以尽量避免更多的资产损失。
事件经过
最近,一位朋友(小A)钱包里的资产被盗。与常见被盗方式不同,小A并未泄露私钥也没有与钓鱼网站的合约交互。调查发现,小A钱包被盗的USDT是通过Transfer From函数转移的,这意味着是另一个地址操作将Token转走的,而非钱包私钥泄露。
通过查询交易细节,发现关键线索:
问题在于,这个地址是如何获得资产权限的?为什么与Uniswap有关?
调用Transfer From函数的前提是调用方需要拥有Token的额度权限(approve)。答案在于执行Transfer From前,该地址还进行了一个Permit操作,两个操作都与Uniswap的Permit2合约交互。
Uniswap Permit2合约是Uniswap在2022年底推出的新合约,允许代币授权在不同应用程序中共享和管理,旨在创造更统一、更具成本效益、更安全的用户体验。随着更多项目集成Permit2,它可以在所有应用中实现标准化Token批准,通过降低交易成本改善用户体验,同时提高智能合约安全性。
Permit2的推出可能改变整个Dapp生态的游戏规则。传统方法中,每次与Dapp进行资产转移交互都需要单独授权。而Permit2可以省去这个步骤,有效降低用户交互成本,带来更好的用户体验。
Permit2作为用户和Dapp间的中间人,用户只需将Token权限授权给Permit2合约,所有集成Permit2的Dapp都可共享这个授权额度。这本是双赢局面,但也可能是双刃剑,问题出在与Permit2的交互方式上。
传统交互方式中,授权和资金转移对用户而言都是链上交互。Permit2将用户操作变为链下签名,所有链上操作由中间角色(如Permit2合约和集成Permit2的项目方)完成。这带来的好处是,即使用户钱包没有ETH也可使用其他Token支付Gas费或由中间角色报销。
然而,链下签名是用户最容易放松警惕的环节。许多人在用钱包登录Dapp时不会仔细检查签名内容,也不理解其含义,这是最危险之处。
要使用这个Permit2签名钓鱼手法,关键前提是被钓鱼的钱包需要有Token授权给Uniswap的Permit2合约。目前只要在与Permit2集成的Dapp或Uniswap上进行Swap,都需要授权给Permit2合约。
更可怕的是,无论Swap金额多少,Uniswap的Permit2合约都会默认让用户授权该Token全部余额的额度。尽管MetaMask允许自定义输入金额,但大多数人可能直接选择最大或默认值,而Permit2的默认值是无限额度。
这意味着,只要你在2023年之后与Uniswap有过交互并授权额度给Permit2合约,就可能暴露在这个钓鱼骗局的风险之下。
重点在于Permit函数,它可以利用你的钱包将授权给Permit2合约的Token额度转移给其他地址。只要获得你的签名,黑客就可以获取你钱包中Token的权限并转移你的资产。
如何防范?
考虑到Uniswap Permit2合约可能在未来更加普及,更多项目可能集成Permit2合约进行授权共享,有效的防范手段包括:
分离资产存储和交互钱包: 建议将大量资产存储在冷钱包中,链上交互的钱包只存放少量资金,可大幅减少遇到钓鱼骗局时的损失。
限制授权额度或取消授权: 在Uniswap上进行Swap时,只授权所需交互的金额。虽然每次交互都需要重新授权会增加一些成本,但可以避免遭受Permit2签名钓鱼。如果已经授权了额度,可以使用安全插件进行取消授权。
识别代币性质,了解是否支持permit功能: 随着越来越多ERC20代币可能使用该扩展协议实现permit功能,需要关注自己持有的代币是否支持该功能。如果支持,对该代币的交易或操作要格外小心,严格检查每条未知签名是否涉及permit函数。
制定完善的资产拯救计划: 如果发现被诈骗,但还有代币通过质押等方式存在其他平台,需要提取并转移到安全地址时,要注意黑客可能随时监控你的地址余额。由于黑客拥有你的签名,只要被盗地址上出现代币,就可能被立即转移。需要制定周密的代币拯救计划,确保提取和转移过程同步执行,不给黑客交易插入的机会。可以考虑使用MEV转移或寻求专业安全公司的帮助。
未来基于Permit2的钓鱼可能会越来越多,这种签名钓鱼方式极其隐蔽且难以防范。随着Permit2应用范围扩大,暴露在风险中的地址也会增多。希望读者能将这些信息传播给更多人,避免更多人遭受损失。