DeFi项目又双叒叕出幺蛾子 BZRX IDO事件解析及防范
当你得知乔丹某款限量球鞋AJ今晚6点正式发售,从早上就搬好了小板凳在店面还排到了一个不错的位置,正准备摩拳擦掌势在必得时,发现前面的某几个排队者根本不是真粉而是黄牛。
黄牛包下了店里所剩的全部新款AJ,于是你赶紧转战网购。然而并不意外,还是像原来一样,由于没有置办高配电脑,也没有专门为了抢购的小程序助力,网速更是没有花钱去升级,于是网络首批发售的AJ也全部抢购一空。
一双原本原价小几千人民币的鞋子,突然在网上飙到了上万人民币,而卖价早已不是官方店家,而是这些黄牛。
这样的事件也许在你剁手时屡见不鲜,然而区块链领域也不断有同样的事情发生。
北京时间7月13日晚10点28分,BZRX在Uniswap上市,一位用户通过智能合约于第一时间用650个ETH购入逾196.61万个BZRX,兑换了流动池中39.3%的BZRX。两分钟后,币价因为大量购买而上涨,该用户开始进行一系列出售行为,共计获利2030枚ETH和30万个BZRX代币。
不过,这个行为其实是攻击者承担了巨大的成本风险(run out of gas)来进行的。在实际攻击过程中,攻击者并不清楚他又双叒叕进行交易,哪些会被矿工挖掘并记录到区块中。
Roman storm推特截图
根据安全工程师Roman storm的推特信息,实际上在所有发送的抛售BZRX的交易中,有14笔交易失败了,并且这些失败的交易每一笔都支付了昂贵的gas费用。当然其中15笔交易是成功的,这也就相当于成功的概率能有一半左右,在实施攻击中其实是承担了很大风险的。
如果攻击者现在是在抢购限量AJ球鞋,每买一双,都要支付手续费,并且在每一次购买的同时就要扣除手续费。然而并不是每次购买动作都能成功,一旦购买失败,手续费也随之打水漂。
从攻击的思路上来看,其实这更像一个经济学问题:
通过程序监控获得BZRX上线消息
单笔大量购入低价BZRX
急剧提升BZRX价格
多次抛售BZRX
攻击者以令人迅雷不及掩耳盗铃之势完成了这一系列操作,从而获利。
今年6月底,有一类似事件想必大家有所耳闻。Balancer上两个流动性池遭闪电贷攻击,损失达50万美元。CertiK天网系统 (Skynet) 检查到Balancer DeFi合约异常后,对其进行了分析。请点击《空手套以太:Balancer攻击解析》《DeFi还有未来吗?Balancer再遭攻击》进行详细了解。
在BZRX代币刚被Uniswap列入交易名单之后,攻击者立刻大量买入BZRX。因为Uniswap的交易所设立的某种市场机制,当某一种代币被大量购买后,单价会升高。然后攻击者通过大量交易,多次将手中的高价BZRX卖出获得ETH(每次售出BZRX会导致BZRX单价下降),最终获得大量利润。其攻击成本和最终获利如下:
Roman storm推特截图
这两次事件的相同之处在于,攻击者都是利用了DeFi金融模型的机制“缺陷”,用低买高卖的方式进行套利。
而此次事件与Balancer攻击不同的地方是,在Balancer攻击中,攻击者是恶意控制并压低代币的数量来对价格进行控制。而在此次攻击中,攻击者则是通过利用BZRX刚刚被Uniswap列入交易名单并且价格较低的那段时间,通过了正常的流程购买从而获利的。因此Roman storm在之后的推特中发布信息称BZRX IDO事件既不是协议利用,也不是黑客行为。
然而,与传统智能合约不同的是,DeFi智能合约存在金融模型漏洞。
即便代码没有漏洞,合约部署没有漏洞,问题也可能出在金融模型漏洞上。
听起来有些防不胜防?
CertiK在此给出一些基本的方法措施,希望能够帮助DeFi项目防范此类问题的再次发生:
发售新币时,可以参考交易所上币的流程。交易所在币开售之前,根据某种指标,给用户一个购买额度,在币开售之后,用户只能购买某额度以内的货币。这样就不会出现一个用户抢购了近40%的新发售的币从而“哄抬物价”。
采用Ring trading(环形交易)方法,设定交易活动间隔时间,分批次出售。
采用dFusion类似的批量拍卖,或是类似于荷兰式拍卖等交易方式进行出售。
此次事件既不是DeFi项目被黑,也不是DeFi合约有漏洞。但其过程中被攻击者钻了巨大的空子,也侧面反映出了DeFi在金融层面而非技术环节本身的不成熟。正如之前CertiK团队专家分析的,这更像是一个经济学问题。
因此CertiK建议广大用户,除了要加强DeFi项目的风险排查,随时监测安全漏洞与风险,更有必要借助第三方安全公司协助其完成攻击测试和全方位安全防御部署,帮助其排查其他任何原因所带来的问题。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場