北京时间06月29日凌晨02时03分起,最近因“借贷即挖矿”模式而备受关注DeFi平台Balancer上的STA和STONK两个ERC20通缩代币池遭到了黑客攻击,共计损失了超50万美元。
PeckShield安全人员介入分析后,迅速定位到问题的本质在于,Balancer上的通缩型代币和其智能合约在某些特定场景不兼容,使得攻击者可以创建价格偏差的STA/STONK流通池并从中获利。
此次黑客实施攻击共计分了四个步骤,具体而言:
1)攻击者通过闪电贷从dYdX平台借出了104,331个WETH;
2)攻击者反复执行swapexactMountin()调用,直至Balancer拥有的大部分STA代币被消耗殆尽,进而开始下一步攻击。最终Balancer仅仅剩余0.000000000000000001个STA。
Huobi DeFi Labs投资总监Unica:中心化业务在多链生态中,也占有一席之地:5月11日,在以《跨界脑暴:眺望Solana生态大宇宙》为主题的AMA中,Huobi DeFi Labs投资总监Unica表示,中心化业务在可以预见的多链生态中,因为跨链可交互性和效率的优势,也占有一席之地。所以我们充分开放与各方的合作,为多链拓扑结构的生成助力。Solana具有独特的技术优势和旺盛的生态生命力,所以我们以此为始来进行探索。[2021/5/11 21:49:19]
3)攻击者利用STA代币和Balancer智能合约存在的不兼容性即记账和余额的不匹配性实施攻击,将资金池中的其他资产耗尽,最终共计获利价值523,616.52美元的数字资产。
4)攻击者偿还从dYdX借出的闪电贷,并卷走了攻击所得的数字资产。
OKEx首席战略官徐坤:多抵押品与稳定币对DeFi的发展起积极作用,发展空间还很大:金色财经现场报道,8月6日2020 Cointelegraph中文大湾区·国际区块链周在深圳举行。OKEx首席战略官徐坤在会上发表“加密资产:重新定义价值边界”主旨演讲,她表示,Token是资产数字化的载体,与区块链一起构建起开放、开源、透明的价值分配和价值交换体系;DeFi开启了可编程金融,2019-2020年的迅猛增长表示其发展空间非常大,以太坊以强大的开发者社区为支撑处于DeFi领域的领先地位,多抵押品对其市场的推动起着积极作用,无论传统金融市场还是DeFi,资产种类越丰富,才能够开展更多元化的业务,市场规模与资产种类往往是正相关,而且是超越先行的关联性。作为DeFi流动性来源与价值基础的稳定币增长趋势向好,也有助于拓展其生态边界。无论传统金融市场还是DeFi,资产种类越丰富,才能够开展更多元化的业务,市场规模与资产种类往往是正相关,而且是超越先行的关联性。[2020/8/6]
接下来的篇幅中,我们将逐步解析黑客在该笔闪电贷交易(http://oko.palkeo.com/0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106/)中实施的攻击行为。
IOST X PROXI:一站式跨链DeFi平台即将上线:据官方消息,近日,IOST与用于跨链衍生品发行和借贷的一站式DeFi平台PROXI正式达成合作。IOST将作为继以太坊、TRON、Tezos外的第四条公链加入PROXI生态。PROXI是专注于信用借贷和跨链衍生品发行的第二代DeFi协议(DeFi 2.0)。PROXI将通过安全的开放式协议为用户和投资者提供最便捷的途径参与衍生品投资和信用借贷,并使用户在专业金融工具的帮助下尽可能获益。
作为战略合作伙伴,IOST和PROXI将在社区拓展、产品开发、技术支持和营销资源上互利互惠,通过可持续发展的DeFi网络共同创建一个去中心化世界。作为领先的区块链技术应用平台,IOST主网从开发环境的基本面上来讲,对开发者极其友好,0手续费也保证了用户使用IOST链上DeFi应用的便捷性。[2020/8/5]
Balancer遭黑客攻击全过程技术拆解
公告 | 火币上线锚定比特币的DeFi项目HBTC:2月14日,火币全球站宣布正式上线锚定比特币的DeFi项目HBTC。HBTC是基于ERC20标准发行的数字资产,采用比特币1:1的比例铸造,在保证了与比特币同等价值的同时,也拥有在以太坊上的灵活性。火币公链相关负责人表示,“HBTC作为连接中心化市场和DeFi市场的桥梁,使用户可以便捷无缝地使用比特币参与以太坊上DeFi市场的运作。未来火币还希望能促进比特币资产嫁接到其它拥有良好技术基础与活跃社区的公链上。火币将坚定的拥抱DeFi领域,有能力和意愿为DeFi市场和区块链行业的繁荣作出自己的贡献。”[2020/2/14]
第一步:闪电贷
从dYdX闪电贷104,331WETH,这部分熟悉DeFi借贷模式的读者应该都比较清楚,此处不再赘述。
第二步:清空Balancer的STA资产
攻击者通过多次swapExactAmountIn()调用清空了Balancer的STA资产,为下一步实施攻击做准备。值得一提的是,我们发现合约代码中每次能够兑换的资产数额其实有上限,然而狡猾的攻击者预先计算了可兑换的WETH最大数额,并巧妙的让Balancer只剩了0.000000000000000001STA。
由于Balancer资金池各资产间存在“动态平衡”原理,仅剩接近于0的STA会拉高STA的价值,使得任何人都可以用1STA换到大量的其他数字资产。
第三步:攻击获利
经过前两个准备步骤之后,攻击者是时候展现真正技术了!
承上所述,攻击者通过swapExactAmountIn()函数将0.000000000000000001STA发送到BPool,以极高的价值差,立即兑换出了30,347个WETH,实现了获利。而此时,BPool的内部记账机制_records在BPool真正收到0.000000000000000001STA之前先加了1。
另外我们发现,在swapExactAmountIn()的底部,_pullUnderlying()尝试从攻击者端收集相应消耗的STA。然而,由于STA转账时还会烧掉1%的手续费,实际BPool是收不到任何STA的。这样就使得BPool的实际STA余额和内部记账产生不匹配。
接下来是最有趣的一部分,攻击者调用gulp()不断重置_records,使得BPool中始终保持0.000000000000000001个STA。因此攻击者可以用极高价的0.000000000000000001个STA将流通池中的WETH、SNX、LINK等其他资产消耗光。
第四步:偿还闪电贷
最终,如上图所示,攻击者偿还了从闪电贷借出的104,331个WETH。
建议
此次攻击事件再次暴露了DeFi可组合性存在的兼容性风险。此前不久,Uniswap和Lendf.Me两个平台就因和ERC777标准的兼容性问题,产生了非常严重的黑客攻击事件。需要警醒的是,在未来DeFi行业类似的黑客攻击行为或许会屡见不鲜。
如果问该怎样才能规避这类攻击事件的发生呢?或许有两个优化调整思路:1)STA/STONK在执行transfer()或transferFrom()时,当转账数额不足以支付手续费时,应该直接回滚或者返回False;2)Balancer应该在每一次transferFrom()函数调用后检查BPool的余额。
当然,任何安全事件事后采取措施补救都无法弥补已经产生的损失,我们相信最好的解决方案还是事前防备。DeFi项目开发者应尽可能利用好的代码规范,并可寻求第三方安全公司协助其在上线前进行全面的攻防测试,尽可能找出一切潜在的漏洞。最后,尽可能对ERC20、ERC777和其它DeFi项目的任何组合行为都做好周密排查。
后续
毫无疑问,Balancer事件的发生势必也会对DeFi社区带来影响,而且这类事情接下来发生的可能性还会很大,在此提醒广大DeFi项目开发者应务必重视合约的安全问题。
经我们统计发现,Balancer在此次攻击事件共计损失了523,616.52美元的数字资产,详情列表如下:
本文链接:https://www.8btc.com/media/615706
转载请注明文章出处
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。