当红流动性挖矿DeFi项目Balancer官方披露了损失50万美元的通缩代币攻击事件原理,链上聚合交易平台1inch则分析了Balancer攻击事件更多技术细节。
原文标题:《STA通缩代币Balancer资金池攻击事件》撰文:链上聚合交易平台1inch翻译:卢江飞
6月29日去中心化交易平台BalancerProtocol至少有两个多代币资金池因漏洞损失了超过50万美元,该事件发生在自动化做市商和通缩代币模式的环境下。黑客通过闪电贷借入资金,实施多次STA代币兑换交易,最终耗尽了Balancer资金池内的STA余额。
Balancer资金池是一种类似Uniswap的多维度自动化做市商,包含多种资产,允许用户通过创建套利机会并基于特定公式形成价格来交换任何资产,因而各种代币可以保持一定比例的平衡。
黑客向以太坊主网发送了一个复杂的交易,对其中一个Balancer资金池实施攻击。几分钟之后第二笔交易发生,攻击对象是另一个Balancer资金池。我们分析了本次攻击发生的情况,报告如下。
攻击者利用智能合约在单个交易中自动执行多个动作,主要分为三个步骤:
第一步,攻击者从dYdX获得了10.4万WETH的闪电贷,这些资金可用于执行24次WETH与STA代币来回交换,使得Balancer资金池中的STA余额在多次交换之后被耗尽,最终剩下1weiSTA。
之所以出现这种现象,可能是因为Balancer资金池合约一直在跟踪合约中的代币余额,同时STA代币采用的通货紧缩模式,每笔交易会向接收者收取1%的转账费,从而导致transfer和transferFrom两个内部函数行为不当,因此每当攻击者将WETH交换成STA代币时,Balancer资金池收到的STA代币都会比预期少1%。
下一步,攻击者开始反复将weiSTA代币兑换成WETH。由于STA代币转账费的存在,在余额不足的情况下Balancer资金池其实无法收到STA代币,但同时他们却会释放了WETH。如果攻击者反复执行这个操作的话,就会将Balance资金池中的WBTC、SNX、还有LINK代币余额耗尽。
最后一步,攻击者向dYdX偿还了通过闪电贷借入的10.4万WETH,然后通过存入一些weiSTA代币迅速增加自己在Balancer资金池中的份额。接下来通过UniswapV2将所获得的Balancer资金池代币兑换出13.6万STA代币,接着又再次将这些代币兑换成109WETH,所有被盗的资金目前都已被转移到该地址:0xbf675c80540111a310b06e1482f9127ef4e7469a。
本次攻击的幕后推手很可能是一个非常老练的智能合约工程师,对头部DeFi协议有着非常深刻地理解和认知。这次袭击显然是有组织的,且事先做了充分准备。此外,攻击者还使用了TornadoCash来获得初始资金,可以隐藏兑换的以太币的来源,因而这些资金被用于部署智能合约或实施攻击。
来源链接:medium.com
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。