http://www.7klian.com

Basdfslasdfsncer 受黑客攻击的根本原因和损失列表,

2020年6月28日下午6:03:11 + UTC开始,DeFi平台Balancer被利用对ERC20通缩代币的有缺陷的操作而受到攻击。从技术上讲,此事件背后的主要逻辑是Balancer与通货紧缩代币之间的不兼容,然后攻击者滥用该不兼容代币来创建损坏的STA / STONK池状态,并从中获利。

平衡器池是类似Uniswap的多维自动做市商(AMM)。它们包含多种资产,并通过创建套利机会以通过特殊公式形成价格来交换任何资产,从而使它们在一定比例之间保持平衡。

黑客向以太坊主网发送了一个复杂的交易,导致对其中一个平衡器池的攻击。几分钟后,第二笔交易发生,并且耗尽了另一个平衡池。攻击者使用智能合约在单个交易中自动执行多个动作。

具体来说,该黑客操作包含四个不同的步骤:

1. 闪电借:黑客从dYdX借了一笔闪电贷款(104,331 WETH)。2. STA耗尽:利用借入的WETH,不良行为者进行了一系列交换,以耗尽平衡器池拥有的几乎所有STA代币。请注意,STA是通货紧缩代币,每次代币转移将收取1%的费用。 STA耗尽的结果是池中仅剩1e-18 STA。

3.牟取暴利者利用平衡器中STA的错误处理方式,偷走了约523,616.52美元的资产池。4.最终黑客偿还了dYdX的闪电贷款,并带走了被盗的资产。

接下来,我们将分解交易中黑客的行为。

图1:黑客行动分解

步骤1:借入贷款

该步骤基本上利用了dYdX闪电贷功能借入104331 ETH。

步骤1:从dYdX借用WETH的闪电贷

步骤2:STA耗尽

在此步骤中,不良行为者在同一事务中执行了多个swapExactAmountIn()调用,以耗尽受攻击的平衡器池中的STA余额。我们注意到swapExactAmountIn()设置了掉期金额的限制,即inRecord.balance * MAX_IN_RATIO。黑客通过一系列操作计算出了该限制,并将最大允许的WETH交换为STA,如下所示:

步骤2:即时STA耗尽(第一部分)

执行上述交换的结果是将1e-18故意留在了平衡器池中:

步骤2:即时STA耗尽(第二部分)

因此,我们现在具有_records [STA]和STA._balance [BPool]如下:

由于BPool中STA的数量几乎为零,因此它相对于其他资产的价格非常高。目前,任何人都可以将1个STA交换为大量其他资产。

第三步:利用牟利

经过前两个步骤,此步骤实质上利用了该漏洞来窃取池资产。

第三步:利用牟利(第一部分)

具体来说,通过swapExactAmountIn()将1e-18 STA发送到BPool中,不良参与者在第一次运行中换出了30,347个WETH。在用于簿记的内部记录中,在BPool合约实际上从msg.sender收集相应的STA代币之前,_records [STA]由tokenAmountIn(即1)增加。

步骤3:以营利为目的(第一部分-继续)

在swapExactAmountIn()的底部,_pullUnderlying()函数收集了STA代币。但是,如前所述,STA是通货紧缩代币,每次代币传输收费显示为1%。由于减少了转账费用,因此平衡器池实际上得到了0个STA代币。因此,BPool的实际STA余额与其内部记录(即_records [STA])之间不匹配。

步骤3:利用牟利(第二部分:gulp重置STA余额的内部记录)

为了解决不匹配问题,利用gulp()重置_records [STA],这有助于不良行为者维持BPool只有1e-18 STA的状态。因此,不良行为者可以继续与极有价值的1e-18 STA交换所有池资产。

第4步:偿还Flashloan

最后一步将贷款偿还给dYdX。

步骤4:偿还dYdX贷款

直击问题

此事件强调了DeFi可组合性带来的挑战,这些挑战可能会导致通缩代币产生不太明显的不兼容性问题。它还提醒人们,先前发生的事件表明ERC777代币不兼容。我们预计不兼容的情况可能会继续存在,并且没有简单的解决方案。

对于此特定事件,一方面,当transfer()或transferFrom()的_value小于所收取的费用时,通缩代币(例如STA / STONK)应还原或返回false。另一方面,在每次transferFrom()调用之后,平衡器可能需要始终检查BPool的余额。尽管如此,始终需要找出所有具有更好编码实践和改进测试覆盖率的极端情况,而无需对ERC20,ERC777和其他DeFi组件的预期行为进行任何不必要的假设。

事件后果

Balancer黑客事件可能不是最后一次攻击事件。攻击的幕后推手是非常老练的“智能合约工程师”,对领先的DeFi协议具有广泛的认识和了解。这次袭击是有组织的,事先已做好充分准备。

最后,我们汇总了此事件中各种资产的损失金额和占比,请见下图:

损失了近50万美元,而黑客获得了近42.5万美元的代币:

455 WETH(价值10万美元)240万个STA(价值10万美元)并将其转换为109 WETH(价值25,000美元)11.36 WBTC(价值10万美元)60.9k SNX(价值10万美元)22.6k LINK(价值10万美元)

原文链接:

https://medium.com/@1inch.exchange/balancer-hack-2020-a8f7131c980e

https://medium.com/@peckshield/balancer-hacks-root-cause-and-loss-analysis-4916f7f0fff5

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

相关文章阅读