# 注意!用过Uniswap的都有钱包被盗风险,教你如何防范 **Published by:** [Web3撸毛家](https://paragraph.com/@web3-57/) **Published on:** 2023-06-10 **URL:** https://paragraph.com/@web3-57/uniswap ## Content 微信:hexf488888 添加我的VX拉你们进入撸毛教学群 群内实时更新最新撸毛教学以及币圈最新资讯用过Uniswap的小心了!签名就被盗!非常难防! 钱包被盗风险涉及范围极广! 我来揭秘基于Uniswap Permit2的签名钓鱼骗局以及Permit2对于未来Dapp格局的影响。 如果你不懂得你正在做的操作意味着什么,那么你进行的每一个链上交互或签名都有可能使你的资产被盗!详情安全问题一直是加密世界中最头疼的问题之一,并且由于区块链的特性,一旦资产被盗几乎是没有办法可以追回的,所以在加密世界中具备安全知识尤其重要。 就在最近,我发现了一个近两个月开始活跃的钓鱼手法,只要签名就会被盗,手法极其隐蔽且难以防范,并且用过Uniswap交互的地址都有风险! 最近,一位朋友(暂称小A)钱包里的资产被盗后找到我,与常见被盗方式不同的是,小A并没有泄漏私钥也没有和钓鱼网站的合约进行交互,于是我开始调查起了这个资产被盗事件。在区块链浏览器中可以看到小A钱包被盗的这笔USDT是通过Transfer From函数进行转移的,Transfer From是第三方将地址内的Token转移给其他地址。这也就意味着这笔被盗的资产是另外一个地址进行操作把Token转移走的,而非钱包私钥泄漏。通过查询交易细节,我们可以发现一些关键线索: 尾号fd51的地址将小A的资产转移到了尾号a0c8的地址中 这个操作是与Uniswap的Permit2合约进行交互的 那么疑点来了,尾号fd51的地址是如何拿到这笔资产的权限的?为什么会和Uniswap有关系?答案就在尾号fd51的地址的交互记录中,在该地址进行Transfer From转走小A的资产之前,可以看到该地址还进行了一个Permit的操作,并且这两个操作的交互对象都是Uniswap的Permit2合约,那么这个Permit函数和Uniswap Permit2又是什么情况?Uniswap Permit2合约是Uniswap在2022年年底推出的新的智能合约,根据官方的说法,这是一个代币审批合约,允许代币授权在不同的应用程序中共享和管理,创造一个更统一、更具成本效益、更安全的用户体验。 并且未来会有越来越多的项目与 Permit2 集成。 Uniswap Labs 🦄 @Uniswap 1/ Uniswap builds public infrastructure that pushes crypto forward. Today we are excited to introduce Permit2 & Universal Router—new smart contracts that increase the flexibility of token approvals & aggregate ERC20s & NFT swaps into one uniswap.org/blog/permit2-a… 1,545 2:30 PM • Nov 17, 2022 我们先要了解一下为什么Uniswap要推出Permit2,我们来假设一个场景,当我们要在某Dex上进行Swap时,传统的交互方式是我们需要先授权(approve)给这个Dex,然后再进行Swap,这通常需要花费我们两笔Gas费,对于用户来说摩擦成本太大了,相信大家都有过这样的体验。而Permit2的推出将有可能改变整个Dapp生态的游戏规则,简单来说就是传统的方法是你每跟一个Dapp进行资产转移的交互你都需要进行一次授权,而Permit2可以把这个步骤给省去,这样可以非常有效的降低用户的交互成本,带来更好的用户体验。 简单来说就是用户只需要把Token的权限授权给Permit2合约,所有集成Permit2合约的Dapp都可以共享这个授权额度,用户就可以减少Gas摩擦,这本是双赢的局面,但这也是一把双刃剑,问题就出在和Permit2交互方式上。 Permit2则将用户的操作变为了链下签名,而所有链上的操作都由中间角色(如Permit2合约和集成了Permit2的项目方等)来完成,这种方案带来的好处是由于链上交互的角色从用户转移为了中间角色,用户即使钱包里没有ETH也可以使用其他Token来支付Gas费或完全由中间角色报销,这取决于中间角色的选择。虽然Permit2的出现有可能改变未来Dapp的游戏规则,但是可以看出的是这是一把很强的双刃剑,对于用户来说,链下签名是最容易放下防备的环节,比如当我们用钱包登入某些Dapp的时候会需要签名进行连接,而绝大多数人并不会仔细检查签名的内容也并不理解签名的内容,而这就是最可怕的地方。 明白了Permit2合约,回到小A的事件中我们就明白了为什么资产被盗都是与Permit2合约进行交互了。 我来重现这个Permit2签名钓鱼手法,首先前提条件是被钓鱼的钱包需要授权给Uniswap的Permit2合约,我发现目前只要在与Permit2集成的Dapp或Uniswap上进行交互的话,都是需要授权给Permit2合约的另外一个很可怕的点是,不管你要Swap的金额是多少,Uniswap的Permit2合约都会默认让你授权该Token全部余额的额度,虽然MetaMask会让你自定义输入金额,但我相信大部分人都会直接点击最大或默认值,而Permit2的默认值是无限的额度……这也就意味着,只要你在2023年之后与Uniswap有过交互并授权额度给Permit2合约,你就会暴露在这个钓鱼骗局的风险之下。 因为重点就在于之前在尾号fd51的地址中与Permit2合约交互的Permit函数上,这个函数简单来说就是利用你的钱包将你授权给Permit2合约的Token额度转移给别的地址。 也就是说只要拿到了你的签名,黑客就可以拿到你钱包中Token的权限并把你的资产转移走。 我们查看这个交互的细节可以发现: owner就是小A的钱包地址(尾号308a) Details中是授权的Token合约地址(USDT)和金额等信息 Spender是黑客地址 sigDeadline是签名的有效时间 signature是小A的签名信息而往回翻小A的交互记录我们会发现,小A之前使用Uniswap的时候点击了默认的授权额度,也就是几乎无限的额度。简单复盘一下就是,小A在之前使用Uniswap的过程中授权给了Uniswap Permit2无限的USDT额度,而小A在进行钱包操作的时候不小心掉入了黑客设计的Permit2签名钓鱼陷阱,黑客拿到了小A的签名后利用小A的签名在Permit2合约中进行了Permit和Transfer From两个操作把小A的资产转移走了目前观察到的是Uniswap的Permit2合约已经沦为了钓鱼天堂,这个Permit2签名钓鱼似乎在两个月前才开始活跃。并且在交互记录中可以发现几乎大部分都是被标记的钓鱼地址(Fake_Phishing),不断有人上当。如何防范1.鉴别签名: 考虑到Uniswap Permit2合约可能会在未来更加普及,会有更多项目集成Permit2合约进行授权共享,菠菜能想到有效的防范手段有: 理解并识别签名内容: Permit的签名格式通常包含Owner、Spender、value、nonce和deadline这几个关键格式2 放资产的钱包和交互的钱包分离使用: 如果你有大量资产的话,建议资产都放在一个冷钱包中,链上交互的钱包放少量资金,可以大幅减少遇到钓鱼骗局时的损失。 3 不要授权过多额度给Permit2合约或取消授权: 当你在Uniswap上进行Swap的时候,只授权你要交互的金额数量,这样虽然每次交互都需要重新授权会多出一些交互成本,但是可以免于遭受Permit2的签名钓鱼。如果你已经授权了额度,可以找相应的安全插件进行取消授权。 4 识别代币性质,是否支持permit功能: 后续可能越来越多的ERC20代币使用该扩展协议实现permit功能,对于你来说需要关注自己所持有的代币是否支持该功能,如果支持,那么对于该代币的交易或操纵一定要格外小心,对于每条未知签名也要严格检查是否是对permit函数的签名。 5 若被骗后还有代币存在其他平台,需制定完善的拯救计划: 当你发现自己被诈骗,代币被黑客转移出去后,但自己还有代币通过例如质押等方式存在其他平台上,需要提取出来转移到安全地址上,这时需要知道黑客可能时刻监控着你的地址代币余额,因为他拥有你的签名,只要你的被盗地址上出现了代币,那么黑客可以直接转移出去。这时需要制定完善的代币拯救过程,在提取代币和转移代币两个过程需要一起执行,不能让黑客交易插入其中,可以使用MEV转移,这需要一些区块链知识以及代码功底,也可以寻找专业的安全公司比如Beosin团队利用交易抢跑脚本来实现。 相信在未来基于Permit2的钓鱼可能会越来越多,这种签名钓鱼方式极其隐蔽且难防,并且随着Permit2的应用范围越来越广,暴露在风险下的地址也会越来越多,希望屏幕前的你看到本文后可以传播给更多人,避免更多人被盗。欢迎大家扫码添加我的VX 拉你们进入撸毛教学群 群内实时更新最新撸毛教学以及币圈最新资讯 ## Publication Information - [Web3撸毛家](https://paragraph.com/@web3-57/): Publication homepage - [All Posts](https://paragraph.com/@web3-57/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@web3-57): Subscribe to updates - [Twitter](https://twitter.com/web3lmj): Follow on Twitter