菠菜菠菜|bocaibocai说:大白话讲解Web3签名钓鱼底层逻辑:授权钓鱼、Permit与Permit2的区别

⚠️⚠️差点中招Zoom链接钓鱼骗局!黑客是如何精心包装骗取你的信任的?警惕所有X上跟你私聊的陌生人🚨🚨
作为一个拥有丰富被钓鱼的韭菜,基本上菠菜已经可以做到一眼识破钓鱼陷阱的程度了,但是这次遇到的局让我在最后一刻才意识到这是一个钓鱼陷阱,对方为吸引你上钩可谓是做戏做全套。

一般来说,比较常见的钓鱼方式是做一个钓鱼网站诱导用户使用钱包进行交互并盗取资产,常见的是通过Approval、Permit和Permit2等方式,这种钓鱼手法菠菜之前有写过科普:

而这次菠菜要讲的,也就是另外一个常的钓鱼方式:诱导用户下载钓鱼文件,这种方式最核心的要点就是如何卸下对方的内心防御,想象一下如果有陌生人莫名其妙给你发一个文件,当然第一反应就是警惕了,所以如何设局就成了关键,以下是菠菜这次遇到的案例,供大家参考(图片只能放4张):

黑客伪装成技术社区创始人假装约会议聊合作

在这一环节,该诈骗团伙提前调查了我的背景,并伪装成了一名英文技术社区的创始人来聊合作,并发了一个约会议时间的链接,此时我还是一个比较警惕的阶段。

接下来我会介绍对方是如何一步步打消我的顾虑的:
比较有信服力的X主页
首先,在确定对方是否是一个骗子之前,我会做一些尽调,打开主页,一个拥有蓝标,3000关注者,2015年的账户给人的感觉看上去并没有让我下结论这是一个骗子

看上去用心经营了很久的领英
其次,我调研了这个人的领英账户,看上去完全就是一个
正常用户经营了很久的账户,进一步增强了可信度。

看起来一切正常的官网
最后,我调研了他们这个公司的官网,一切看上去都非常真实,有正在进行的活动,各种Event现场照片,这些因素让我相信了这次聊合作的真实性,且确认了对方的链接确实是约会议时间的链接后,我与他预约了一个会议并纳入了我的calendar中,那么是什么让我发现这是一场精心准备的骗局呢?
伪装成Zoom的会议链接
问题就出在会议链接上,在点击会议链接后,我跳入到了一个Zoom的会议开始界面,就像真的使用Zoom一样,但是当我点击开始会议之后,我的Zoom并没有弹出来,而是自动下载了一个Zoom安装软件,而这个Zoom安装软件正是钓鱼文件,一旦你打开了,你的钱包就有可能面临被盗。
幸运在我使用的是MacOS系统,在我点击文件后我能立马发现这个Zoom下载文件的猫腻,如下图所示,如果是Windows系统的话,被盗的可能性会大大增加!

总之,可以看出诈骗团队为了获取他人的信任,真的有非常用心的在准备了一系列的包装,没有什么被盗经验的小白非常容易上当!

菠菜也是分享这一次经历,劝诫大家:
不要随意相信任何陌生人的私信、链接和下载的文件!!
不要随意相信任何陌生人的私信、链接和下载的文件!!
不要随意相信任何陌生人的私信、链接和下载的文件!!

重要的事情说三次!!

不要辛辛苦苦赚来的钱到头来一场空!!

————————————

《大白话讲解Web3签名钓鱼底层逻辑:授权钓鱼、Permit与Permit2的区别》
明明只是签了个名,我的钱怎么没了呢??“签名钓鱼”目前正成为了Web3的黑客们最喜欢的钓鱼方式,最近看余弦大佬@evilcos和各大钱包和安全公司都在不断宣传科普钓鱼签名的知识,但是每天还是有好多人被钓鱼。

菠菜认为其中一个原因就是大部分人对钱包交互的底层逻辑并不了解,并且对于不懂技术的人来说学习门槛过高,所以菠菜决定出一个图解版科普签名钓鱼的底层逻辑,并且尝试用最大白话的形式让不懂技术的人也能看明白。

如果大家认为有帮助,帮忙点赞转发帮助更多人看到呀!如果有错误也欢迎大家指出!

首先我们要知道我们使用钱包一共只有两种操作:“签名”和“交互”。最简单直接的理解就是:签名是发生在区块链之外的(链下),不需要花Gas费的;交互是发生在区块链上面的(链上),是需要花Gas费的。

一般签名的使用场景是为了验证你是你,比如登入钱包,就像你如果要去Uniswap换Token的话,你需要先链接你的钱包,那么这个时候你就需要签一个名告诉网站“我是这个钱包的拥有者”,然后你就可以使用Uniswap了,这个步骤对区块链不会有任何数据或者状态上的变化,所以不需要花钱。
而交互的话就是当你要真正在Uniswap上换Token的时候,你需要先花一笔钱告诉Uniswap的智能合约:“我要用100USDT换一个菠菜币,我批准你可以挪动我的100USDT”,这个步骤就叫做授权(approve),然后你还要再花一笔钱告诉Uniswap的智能合约:“我现在要用100USDT换一个菠菜币了,你现在可以进行操作了”,然后你就完成了用100USDT换一个菠菜币的操作。

简单理解签名和交互的区别之后,我们就来介绍一下钓鱼的原理,菠菜会列举三个不同的方式:授权钓鱼、Permit签名钓鱼和Permit2签名钓鱼,这三个是非常常见的钓鱼方式。

咱们先讲授权钓鱼,这是以前Web3最经典的钓鱼手法之一,顾名思义就是利用授权(approve)这个机制,之前Uniswap的例子告诉我们,授权就是告诉智能合约“我批准你挪动我多少xxx的Token”,那么黑客就可以做一个假的钓鱼网站,有着精美的前端伪装成一个NFT项目,网站中间是一个漂亮的大按钮“领取你的空投”,实际上你点了之后钱包弹出来的界面实际上是让你授权你的Token给黑客的地址,那么这时候如果你点了确认,那么就恭喜黑客成功完成一个KPI了。
但是授权钓鱼有一个问题:因为要花Gas费,现在很多人在涉及到花钱的操作上会有所警惕,在陌生网站点击之后稍微一看就会发现不对劲,还是比较好防范的。

那么接下来就来到了今天的主角:Permit和Permit2签名钓鱼啦,是Web3资产安全领域的重灾区,为什么这么难防呢?因为每次你要使用一个Dapp之前一定要签名登入你的钱包,在许多人脑子里可能已经形成了一种惯性思维:”这个操作是安全的”,再加上不需要花钱和大多数人不知道每个签名背后意味着什么。

我们先来看Permit机制,Permit是针对ERC-20标准下授权的一个扩展功能,像我们平常用的USDT就是ERC-20,简单来说就是你可以签名批准其他人来挪动你的Token,我们知道授权(Approve)是你花钱告诉智能合约:“你可以挪动我xxx数量的Token”,那么Permit就是你在一张“条子”上签了个名给某一个人,这个纸上写着:“我允许某某某可以挪动我xxx数量的Token”,然后这个人拿着这个“条子”给智能合约并花一笔Gas费告诉智能合约:“他允许我挪动他xxx数量的Token”,然后你的钱就可以被其他人挪走了,在这个过程中你只是签了一个名,而背后却意味着你允许其他人去调用授权(Approve)并转走你的Token,黑客可以做一个钓鱼网站,把登入钱包的按钮替换成Permit钓鱼,那么就可以轻轻松松把你的资产钓走啦。

那么Permit2又是什么呢?Permit2其实并不是ERC-20的一个功能,而是Uniswap为了方便用户推出的一个功能,之前的例子讲了你要在Uniswap上用USDT换菠菜币你需要先授权(Approve)一次,然后再进行兑换,这需要花两笔Gas费,所以Uniswap就想了个办法:“你一次性把额度全部授权给我好了,每次兑换你签个名我就给你处理了”,这个功能帮助Uniswap用户使用的时候只需要支付一次Gas费即可,并且这个步骤是签名,所以Gas费其实不是你付的,而是Permit2合约代付了,但是会从你最终兑换的Token里扣除掉。

但是中Permit2钓鱼的条件是你曾经使用过Uniswap,并且你还授权了无限额度给Permit2智能合约,由于目前Uniswap默认的操作就是无限额度授权,所以其实满足该条件的用户数量还是蛮大的,同样黑客只要骗你把名签了就可以把你的Token转走(仅限给过授权的)。

总结一下,授权钓鱼的本质是你花一笔钱告诉智能合约:“我批准你挪用我的Token给黑客”,签名钓鱼的本质是你签了一张允许别人去挪动你资产的“条子”给到黑客,黑客花钱告诉智能合约:“我要挪用他的Token转给我”。Permit和Permit2是目前钓鱼签名的重灾区,Permit是ERC-20的一个授权扩展功能,Permit2是Uniswap推出的一个新功能。

那么理解了原理,怎么防范呢?

1.首先最最重要的就是培养你的安全意识,每一次钱包的操作都要去检查一下你在做的操作到底是什么?

2.大资金和玩链上的钱包分离,一旦被钓鱼了可以把损失降到最低

3.学会识别Permit和Permit2的签名格式,只要你看到以下签名格式,那你就要警惕起来了:

Interactive:交互网址

Owner:授权方地址

Spender:被授权方地址

Value:授权数量

Nonce:随机数

Deadline:过期时间

————————————————

菠菜菠菜|bocaibocai🐡说:_
纠正个错误:approve不是告訴uniswap可以挪用我100usdt,而是告訴USDT的合约,Uniswap可以挪用我100usdt。

刘一手说:
请问如果我授权的是有限额度的代币,那是不是无论这个额度多大都不是permit2呢?另外一个签名只能使用一次吗?EVM里是否不存在一个签名能多次转账的情况呢?deadline因为不是人类可读的格式,所以该怎么转换成时间呢?是否我在revoke上撤销了一个dapp的aproval,就不用再担心我这个钱包被permit2钓鱼转走这个dapp里的钱了呢?

菠菜菠菜|bocaibocai🐡说:
现在Uniswap默认都是Permit2了,但是你授权需要用的额度的话那你每次用一次就多授权一次了,这样的话别人骗了你签名是拿不走钱的,签名只能用一次,有Nonce防止double spending,deadline这个我还真不知道,你如果撤销了所有授权的话当然就不怕permit2了

deepro说:
现在很多dapp在授权环节已经支持用多少授权多少输入,uni这种大平台还是无限授权,为了用户体验的同时也给用户带来非常大的风险

CryptoCharming 🐟说:
如果簽過一次惡意的 Premit2 給小偷 他成功轉走我授權過的資產(假設是 USDT)之後我又拿到 USDT 他能永久有換走我錢的權利嗎?一直好奇這點

菠菜菠菜|bocaibocai🐡说:
只能用一次

CryptoCharming 🐟说:
印象中簽名包含 Deadline 如果他是無限久
而我之前授權的是無限量的 $USDT
為什麼他只能用一次呢?實在有點好奇
謝謝解答!

菠菜菠菜|bocaibocai🐡说:
有Nonce的

CryptoCharming 🐟说:
啊這麼說就懂了 簡單明瞭 是為了防止該簽名能夠進行 Double spending 才設計了 Nonce 同時剛好制約了小偷只能偷走我一次資產 謝謝!😂

rin说:
请问我今天用钱包connect一个假网站,没有approve和sign(connect之后就结束了,没有approve和sign请求)这个钱包还安全吗?目前没有钱被转走,我好害怕等质押钱到账会立马被转走啊。

菠菜菠菜|bocaibocai🐡说:
应该是没问题的…如果你点的是真的connect

Crpyto Darren说:
有點錯誤。approve不是告訴uniswap可以挪用我100usdt,而是告訴USDT,Uniswap可以挪用我100usdt。

菠菜菠菜|bocaibocai🐡说:
感谢提醒哈哈 一点小细节错误

w3tester说:
在ICP里,登陆不同Dapp的时候用户地址会发生变化,用户在每个Dapp里的地址都是独一无二的。这就从根本上杜绝了恶意Dapp偷走用户资金的可能。个人认为这个设计非常精妙,对于绝大多数普通用户很友好,比以太坊目前简陋的安全机制要好得多。

ly792222.eth(互fo💯) (TAP🚰)说:
3月份我就是中了离线签名钱包被盗30多w了,早看到楼主的这篇文章就好了,那请教下,除了楼主说的解决方法:1、多签钱包能解决离线签名的问题吗?2、养成习惯,及时取消授权签名,这两方法可以安全可用吗?

分享给他人

你也许会喜欢

+ There are no comments

Add yours