Jason chen

Posted on Oct 23, 2022Read on Mirror.xyz

签名就被盗NFT!小心小心!

NFT被盗的各个手法大家应该经过这么久的市场教育已经比较熟悉了,主要是通过诱导你点击某个按钮触发approve事件将你的NFT授权给别人,从而对方可以转移走,这种手法其实已经识别度很高了,毕竟它需要把小狐狸弹出来后,让你交一笔gas费完成approve操作,一到了交钱的时候毕竟大家也会意识到有问题了,但是我今天要讲的这个手法真的让我后背发凉,如果我的朋友没有遇到我真的不会意识到,如果我遇到了我也一定会中招!所以大半夜的在凌晨3点我需要将它写下来分享给大家,请转发预警周围的朋友们!

今天晚上我的一位朋友说他登录了一个假冒网站,然后仅仅进行了签名,所有授权给opensea即曾经挂过单的NFT均被转走了!这个假冒网站是冒充最近因空投大热的Blur,所以每当出现这种行业热度很高的事情时就一定会冒出来几个浑水摸鱼捞一把的黑客们。

这是它被盗的那笔交易记录,可见在一笔交易中5个NFT被转走了。

然后我们看到这个交易的发起方form已经被标记为钓鱼地址,下面的交互合约地址旁边有一个Seaport字样,还被打了一个绿色的对勾。

Seaport

那可能是和这个Seaport合约进行了交互才导致被盗的?但是这个合约被打了绿标应该是健康认证过的呀,Seaport是什么呢?

Seaport是opensea在今年5月20日推出的一个NFT交易协议,用于取代已经使用了4年之久的Wyvern,它的本质就是一个处理NFT交易的订单薄智能合约,也就是你所有在opensea进行的NFT交易行为挂单、offer等全部走的这个协议,这是opensea官方的协议,怎么可能会出问题呢?

然后我打开了被盗NFT的交易,发现其被执行了Match Orders操作从而被转移给了另一个地址,Match Orders即Seaport中匹配到了订单,看着像是你情我愿呀这不是Match到了吗?

为了帮我的朋友破案,我壮着胆子试毒,打开了这个钓鱼网站并连接钱包,然后出现了一个签名,看着挺正常的人畜无害,但里面肯定有鬼我不敢点,先放在一边。

因为Seaport是opensea的NFT交易协议,然后我朋友说他所有挂单的NFT均被盗了,并且刚才看到是执行了协议内的Match Order即匹配到了买家完成成交,挂单的逻辑就是我将某个NFT背后的collection执行approve方法授权给opensea,让opensea有权限转移我的NFT即托管,这个过程是要交gas费的,然后我再将某个NFT挂单时则是进入到opensea链下的订单薄中即Seaport中,当有人对该订单进行交易时opensea再进行链上资产转移操作,那我来到opensea试着挂一个看看Seaport到底在搞什么鬼。

当我点击listing后,卧槽出来的签名居然和我刚才在钓鱼网站遇到的一模一样!这说明什么,大胆推演,钓鱼网站执行了Seaport让我在不知情的情况下在opensea进行了交易!

我们来看一点钓鱼网站弹出的签名中到底都有什么内容。

首先有一个itemType,它指的是本次交易的目标资产类型,1、2、3分别表示ERC20、721和1155,所以它是要盯着我的NFT啊(721是NFT的主流类型)。

然后offerer字段里面是我的地址,Seaport中若itemType为NFT类型即ERC721/1155,则offerer是卖方要把自己的NFT卖出去,若为ETH/ERC20这种“钱”的则offerer是买方来花钱买NFT的,所以这里填写的是我的地址,太歹毒了这个签名里面居然要把我的NFT转出去!

然后我们再往下看,token字段里面有一串地址。

我把它复制粘贴到opensea打开后,歹毒,歹毒啊!居然要偷走我的熊市之光debox小企鹅!

而正如之前分析的一样,debox也恰好就是我曾经在opensea挂单过的NFT!(对不起我居然之前卖过熊市之光..太穷了赚点包子钱)

再往下看,recipient字段中是一个我很陌生的地址。

我将该地址复制后在我朋友被盗的那个交易中进行检索后,果然出现在了里面命中了!

所以是该假冒网站调用了Seaport协议让我对opensea进行了操作从而转移走了我的NFT,具体的机理还需要深入研究,但是Seaport作为opensea官方协议居然出现了这种问题,一定是需要负有责任的,至少应该要做到鉴权,用随机数验证交易来源也可以一定程度避免该问题。我不知道中招的人有多少,但是请大家一定铭记如果你在签名时遇到了如上我截图的Seaport字样,以及签名内容中包括了offerer等,请一定要谨慎!我们BuidlerDAO孵化的防钓鱼安全插件 www.metashield.cc 也会尽快想办法将该风险识别更新上去!请转发让更多人预警,也强烈要求opensea出具该问题的解决方案。

欢迎关注我的twitter:@jason_chen998,也可添加我的微信 cj350306878,请备注姓名、公司及目的

往期文章:

OpenSeaNFT