DEF:DeFi平台Balancer遭黑客攻击全过程技术拆解

北京时间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。

DeFi 概念板块今日平均跌幅为4.39%:金色财经行情显示,DeFi 概念板块今日平均跌幅为4.39%。47个币种中5个上涨,42个下跌,其中领涨币种为:HOT(+29.17%)、KCASH(+11.96%)、LBA(+4.58%)。领跌币种为:REP(-10.65%)、SUSHI(-10.40%)、CRV(-10.34%)。[2021/7/9 0:38:27]

3)攻击者利用 STA 代币和 Balancer 智能合约存在的不兼容性即记账和余额的不匹配性实施攻击,将资金池中的其他资产耗尽,最终共计获利价值 523,616.52 美元的数字资产。

4)攻击者 偿还从 dYdX 借出的闪电贷,并卷走了攻击所得的数字资产。

接下来的篇幅中,我们将逐步解析黑客在该笔闪电贷交易(http://oko.palkeo.com/0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106/) 中实施的攻击行为。

TheBlock研究员:因黑客攻击从DeFi中撤出的资金量超3.7亿美元:TheBlock研究分析师IgorIgamberdiev在其最新报告中指出,因黑客攻击从DeFi中提取出的资金量超3.7亿美元。DeFi攻击的所有根本原因可分为两种类型:仅由于项目代码中的Bug而导致的漏洞(如缺少健全性检查);由DeFi可组合性引起的Bug(如预言机误用)。最频繁的攻击发生在周末,这使得开发人员(和研究人员)很难做出回应。[2021/5/20 22:26:35]

(图解黑客攻击全流程)

第一步:闪电贷

从 dYdX 闪电贷 104,331 WETH,这部分熟悉 DeFi 借贷模式的读者应该都比较清楚,此处不再赘述。

Cardano链上DeFi生态系统OccamRazer已完成ID0销售:4月15日消息,Cardano链上DeFi生态系统OccamRazer已完成ID0销售,官方表示额度在30秒内均已售完。UniSwap显示OCC代币价格12.24美元。[2021/4/15 20:21:19]

第二步:清空 Balancer 的 STA 资产

攻击者通过多次 swapExactAmountIn() 调用清空了 Balancer 的 STA 资产,为下一步实施攻击做准备。值得一提的是,我们发现合约代码中每次能够兑换的资产数额其实有上限,然而狡猾的攻击者预先计算了可兑换的 WETH 最大数额,并巧妙的让 Balancer 只剩了 0.000000000000000001 STA。

由于 Balancer 资金池(BPool)各资产间存在“动态平衡”原理,仅剩接近于 0 的 STA 会拉高 STA 的价值,使得任何人都可以用 1 STA 换到大量的其他数字资产。

Polies CEO Michael Caravetta:DeFi还将绽放,Polies将推动波卡上的DeFi热度:据官方消息,币赢CoinW《共识52》第七期《Polkadot的进化之路——波卡是通往Web3.0的拐点?》主题AMA主题中Polies CEO Michael Caravetta认为,随着波卡平行链和主网上线日益临近,波卡生态的聚合力量将会在行业带起新的热潮。

Polies是在波卡生态上构建完整DeFi交易情境的项目,除了传统的DeFi挖矿和借贷等,还创建了ETF、基金等相关衍生品的基础设施。在这个基础设施上,可以便利地增加不同的金融模块,也可以让其他波卡的DeFi项目,如Zenlink等快速接入。

Polies目前已经完成了多个衍生品市场底层搭建,将配合波卡官方的动作,再一次为DeFi的热度提供燃料。[2020/11/6 11:51:57]

第三步:攻击获利

火币大学校长于佳宁:DeFi+矿业最重要的是从思维层面实现打通:8月19日,火币大学校长于佳宁受邀参加新浪潮之巅,数字金融矿业大会,以“DeFi时代的数字矿业”为主题进行演讲。

于佳宁认为,挖矿是区块链的基石,DeFi+矿业可以有很多新玩法,新产品,最重要的是从思维层面实现打通。区块链是商业世界中“氢弹级别”的武器,其力量来自于网络效应(空间价值)与金融杠杆(时间价值)的相乘得到的“乘数威力”。区块链本质上是结合了技术创新、数字金融、经济社群和产业应用四位一体的深度融合创新的“新物种。因此,区块链思维=互联网思维x金融思维x社群思维x产业思维,将是未来世界最重要的思维方式。[2020/8/19]

经过前两个准备步骤之后,攻击者是时候展现真正技术了!

(第三步 :攻击获利图示上)

承上所述,攻击者通过 swapExactAmountIn() 函数将 0.000000000000000001 STA 发送到 BPool,以极高的价值差,立即兑换出了 30,347 个WETH,实现了获利。而此时,BPool 的内部记账机制 _records[STA] 在 BPool 真正收到 0.000000000000000001 STA 之前先加了 1(注:此后攻击者会用gulp()对该数值进行重置)。

(第三步:攻击获利图示下)

另外我们发现,在 swapExactAmountIn() 的底部,_pullUnderlying() 尝试从攻击者端收集相应消耗的 STA。然而,由于 STA 转账时还会烧掉 1% 的手续费,实际BPool 是收不到任何 STA 的。这样就使得 BPool 的实际 STA 余额和内部记账产生不匹配。

接下来是最有趣的一部分,攻击者调用 gulp() 不断重置 _records[STA],使得 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 美元的数字资产,详情列表如下:

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

ICPDAO:DAO如何改变时尚行业?

本文由公号"老雅痞"(laoyapicom)授权转载目前为止,虽然NFTs已经占据大部分了围绕加密货币的时尚对话.

[0:46ms0-0:998ms