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

By [littleflyingpiggy](https://paragraph.com/@littleflyingpiggy-2) · 2022-10-12

---

如果觉得我的内容对你有帮助，欢迎关注我的[推特账号](https://twitter.com/flying_piggy1)和小红书[账号](https://www.xiaohongshu.com/user/profile/5dcdf00f000000000100410b?xhsshare=CopyLink&appuid=5dcdf00f000000000100410b&apptime=1672565199)：飞猪聊web3，获取更多web3的安全知识、基本技能和实用资讯

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

![](https://storage.googleapis.com/papyrus_images/0bdc98b42f6e3d4c0558691d4d2a50f1c6c4f7a506892a035fd83e393f8649fb.png)

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

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

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

![](https://storage.googleapis.com/papyrus_images/bf6f88ae2e91beaff5faf1c93bc5586a6c2ff6ba9e84aa1eba039ade99bf8a13.png)

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

交易1

![](https://storage.googleapis.com/papyrus_images/a7191c3849018c080dbc8a8cd03335ce37bd64b9f14a7ba51318ef76089998a9.png)

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

![](https://storage.googleapis.com/papyrus_images/cd79c6c80ee56a41aa5f2465d2488d9b33ca6cabb62521f4ed0d8197a86635e5.png)

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

![](https://storage.googleapis.com/papyrus_images/3cc0c8d113c34e2c518dc329bde5821e645f025bec38c194ed94cd7a949f25be.png)

交易2

![](https://storage.googleapis.com/papyrus_images/b1f562f46241de89ef5471cd8474be36940c8a06b56b8566d2cb701559fd2f49.png)

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

![](https://storage.googleapis.com/papyrus_images/9727f083e99835e4ee9700a1c652fb0fb01e3138d72ca3ca189fdfbbcc71bc4d.png)

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

![](https://storage.googleapis.com/papyrus_images/36304b4297223783b511be8964c30bd7f887812551a21a9975c32317acd92876.png)

交易3

![](https://storage.googleapis.com/papyrus_images/c61c0bc9b4cabf315b5244622f2f3e0ce948b0911b607084cbf3b97ef1f2c61d.png)

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

交易4

![](https://storage.googleapis.com/papyrus_images/992d28b7c0c762f193a65cf8a6c0c7c6ad03ebd77b7b0305336ecfb834c09ad9.png)

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

![](https://storage.googleapis.com/papyrus_images/0248cadbac1cd20fe1714d89ac967613457c0404239bdcd4029d6ca043523b1f.png)

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

![](https://storage.googleapis.com/papyrus_images/b27fd8a2aecc78c8e6aa43e7a0d55ef4bc0c9b1fdcb52084385215da2b6a412d.png)

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

![](https://storage.googleapis.com/papyrus_images/bc97f5d9ed67ba2b0b43f6338d96453e9db266702a07058cf4fc82d8c9d89478.png)

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

官网地址是：[https://otc.sudoswap.xyz/#/](https://otc.sudoswap.xyz/#/)

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

![](https://storage.googleapis.com/papyrus_images/cf783f7bb7007e3d8773759e745e764d465520044062e534e1e47254ddcd7b3d.png)

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

![](https://storage.googleapis.com/papyrus_images/9612650f0080c9bf7903f51e5b0f0456e75e6e5b34bd6f5ea92af9791997edd2.png)

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

![](https://storage.googleapis.com/papyrus_images/6dc1e09fdf0be8134d394f97d6f0f0c1aed3567eb7f017110addc281b399b18b.png)

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

![](https://storage.googleapis.com/papyrus_images/fb2df3ca806f4392c7677ba396c2115edc95380843f27ac95c03a761d865ab24.png)

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

![](https://storage.googleapis.com/papyrus_images/6d119cb4eff3dbb1536fe9f22c01df3009eb833f907a2f106fa38e5e4f3a1adb.png)

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

![](https://storage.googleapis.com/papyrus_images/0f6c355409c17f197f796b91f9b11d58e47ee25affdc8445875b88a54c655cf6.png)

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

![](https://storage.googleapis.com/papyrus_images/b822db4f973c3c45dbf4f24dfec5523a2bccdbe713e70d81fa63ce1f35d54f3c.png)

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

交易5：

![](https://storage.googleapis.com/papyrus_images/c87171616656fc7973f0e3fd487ed2a35bdfa9d4b3c5d4d1a35186bdd2f1a8b5.png)

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

![](https://storage.googleapis.com/papyrus_images/d7f45b0e0b56279168ecfba840cb10e53b8f65e683c879b2a7b5ae310aa8814b.png)

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

![](https://storage.googleapis.com/papyrus_images/160bd142a6d012f5cad31d1da5904a26489a27f72b2e9b433d7a1043d8c2724a.png)

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

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

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

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

如果觉得我的内容对你有帮助，欢迎关注我的[推特账号](https://twitter.com/flying_piggy1)和小红书[账号](https://www.xiaohongshu.com/user/profile/5dcdf00f000000000100410b?xhsshare=CopyLink&appuid=5dcdf00f000000000100410b&apptime=1672565199)：飞猪聊web3，获取更多web3的安全知识、基本技能和实用资讯

---

*Originally published on [littleflyingpiggy](https://paragraph.com/@littleflyingpiggy-2/7-bayc-approve)*
