大额资产缘何被盗?图文详解7只bayc被盗实例,全面了解approve授权中隐含的风险

如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯

如果需要更具体、系统、有针对性的教程指导,欢迎大家私聊咨询哦

近日,os用户lazslo_btc在两次错误的操作后损失了自己的7只BAYC,价值超过540ETH,损失将近100万美元。

下面我将结合此案例给大家具体讲解一下,授权中隐含的风险以及到底哪些操作最终导致了被盗事件的发生。

失主涉及被盗的操作一共有8笔,为了方便理解,我以时间顺序从1到8进行编号

单纯从图片上能够获取的信息非常少,所以我们需要点击txn hash(编号前面0x开头的一串数字,每笔交易唯一且不重复)进行查看

交易1

从交易1中,我们可以看出来,失主(尾号39d6)的地址把操作自己持有的BAYC的权限授权给了尾号是E354的地址,使用的方法是set approval for all

接下来我们点击尾号是E354的被授权operator地址查看,发现这个地址是X2Y2市场的deployer合约,这个合约是你要在X2Y2上交易时,必须要授权的一个合约,所以这一步的操作是正常的,失主应该是希望在X2Y2上出售自己的BAYC

交易2

从交易2中,我们可以看出来,失主(尾号39d6)的地址把操作自己持有的BAYC的权限授权给了尾号是6cad的地址,使用的方法是set approval for all

接下来我们点击尾号是6cad的被授权operator地址查看,发现这个地址是0x:deployer 2合约,这个合约是要使用一些比较流行的NFT交易网站(比如sudoswap的点对点交易)要授权的合约,所以这一步的操作也是正常的,结合下文要提到的第4笔交易,失主应该是希望在sudoswap上跟别人交换自己的BAYC

交易3

交易3和交易2授权的内容完全一致,所以,交易3其实是无意义的授权,只是单纯浪费gas费用,这里不展开解释

交易4

在交易4中,出现了一种新的操作,fill order,点击交易的txn hash,进入交易详情,我们可以看到,在这部的操作中,失主用自己的1只真BAYC交换了骗子的一只名为crystal dog的NFT

为了了解这个到底是如何发生的,我们需要阅读一下该笔交易的inputdata数据,看看到底发生了什么,数据中告诉我们,该笔交易涉及两个地址,第一个是骗子地址,我们暂时忽略;

第二个是该笔交易涉及的合约地址(尾号3E44),我们点击进入查看,发现这个合约并未被以太坊标记是哪个合约,但是合约创建者是xmon.eth

这里单纯凭交易数据就无法继续推导了,需要一些相关的背景知识:最近比较火热的AMM NFT交易市场sudoswap其实还有一个V1版本,是一个点对点的NFT场外交易平台

官网地址是:https://otc.sudoswap.xyz/#/

他的创始人是oxmons,底层交易引擎使用的是0x:deployer 2

在这个平台上,买卖双方先自行商定好交易价格,然后卖家创建订单,设定买家为定向销售对象,买家支付商定的价格,就可以完成交易。由于这个平台是买家和卖家私人间的交易,所以平台不会对交换的内容进行任何审核,一切由买卖双方自行商定,这里就隐藏了一个风险,即有些骗子用伪装成蓝筹的NFT来交换他人真正的蓝筹NFT或者ETH,如下图用一文不值的假AZUKI换0.01ETH

这样一来,我们就清楚了,失主是利用sudoswap的V1版本跟骗子进行了一次场外的NFT兑换交易,用自己的真BAYC换了骗子的伪装成BAYC的赝品。那么骗子到底用什么为诱饵让失主同意进行交换呢?我们点击进入名为crystal dog collection的假BAYC合约

发现这是一个9天前创立的,只有10个NFT、3个持有人、14笔交易,以太坊标记未知的新合约

我们利用read contract的方法看一下,失主交换的编号未211的NFT到底是什么样的?

根据获取到的string数据,我们可以找到该NFT在ipfs上的图像地址,是一只特征名为trippy的BAYC,这个特质在蔡叔之前制作的BAYC hot traits图解中位列第三位,拥有该特质的BAYC在os上的地板价格为450ETH。

而失主用来交换的8274的稀有特质是cheetah,此特质在蔡叔制作的BAYC hot traits图解中位列第八位,在os上地板价格为108ETH。

至此,失主第一次被骗的原因应该已经真相大白了,骗子可能是伪装成对BAYC价值一无所知的小白,用高价值的BAYC来交换失主的低价值BAYC,利用失主想要贪便宜快速成交的心理成功完成了第一次行骗。

交易5:

接下来我们看第5笔交易,从交易4到交易5之间有12分钟的时间间隔,中间发生了什么我们不得而知,但是从交易5的txn hash中,我们可以看到,此时失主把操作自己持有的BAYC的权限给了尾号是9BAC的地址,使用的方法仍然是set approval for all

然后我们继续来看一下,9BAC这个地址到底又是何方神圣呢?

交易6、7、8与交易5完全一致,所以后面3笔交易完全没有任何意义,纯属浪费gas,因为交易5已经授权了诈骗合约全部权限,所以在授权之后,诈骗合约立刻转移了失主剩余的6个BAYC。

关于失主第二次被骗的操作,我认为有一种最可能的推测:失主发现被骗想要利用诸如revoke.cash之类取消授权网站来取消授权,但是进入了假的网站,于是本来想要挽回损失的操作反而将损失扩大化了。至于为什么会进入假的网站?很有可能是骗子的同伙埋伏在失主周围,利用失主被骗后急于挽回损失的着急心情,使用话术让失主不加甄别的盲目操作,毕竟失主在交易BAYC的时候也不注意检查对方合约心大之辈啊,结果真的正中骗子下怀,整个BAYC系列被骗子一锅端掉。

整个事件一分析,大家可以看到其实骗术本身并没有特别的技术含量,无非是常见的钓鱼域名、错误授权,完全不是顶级黑客对付不懂代码的普通人的剧本,之所以会上当大多都是由于个人安全意识单薄外加急于获利的心理,让人自动自发走进了坑里。

区块链的暗黑森林中,任何一个操作都可能涉及大额资产损失,大家一定不要忽视资产安全,及早学习、未雨绸缪、防微杜渐,方为上策。

如果觉得我的内容对你有帮助,欢迎关注我的推特账号和小红书账号:飞猪聊web3,获取更多web3的安全知识、基本技能和实用资讯

Subscribe to littleflyingpiggy
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.