登录

1inch 技术分析头部 DeFi 协议 Balancer 通缩代币资金池攻击细节

安全
0 8

当红流动性挖矿 DeFi 项目 Balancer 官方 披露了 损失 50 万美元的通缩代币攻击事件原理,链上聚合交易平台 1inch 则分析了 Balancer 攻击事件更多技术细节。

原文标题:《STA 通缩代币 Balancer 资金池攻击事件》
撰文:链上聚合交易平台 1inch
翻译:卢江飞

6 月 29 日去中心化交易平台Balancer Protocol至少有两个多代币资金池因漏洞损失了超过 50 万美元,该事件发生在自动化做市商(AMM)和通缩代币模式的环境下。黑客通过闪电贷借入资金,实施多次 STA 代币兑换交易,最终耗尽了 Balancer 资金池内的 STA 余额。

1inch 技术分析头部 DeFi 协议 Balancer 通缩代币资金池攻击细节

Balancer 资金池是一种类似 Uniswap 的多维度自动化做市商,包含多种资产,允许用户通过创建套利机会并基于特定公式形成价格来交换任何资产,因而各种代币可以保持一定比例的平衡。

黑客向以太坊主网发送了一个复杂的交易,对其中一个 Balancer 资金池实施攻击。几分钟之后第二笔交易发生,攻击对象是另一个 Balancer 资金池。我们分析了本次攻击发生的情况,报告如下。

攻击者利用智能合约在单个交易中自动执行多个动作,主要分为三个步骤:

第一步,攻击者从 dYdX 获得了 10.4 万 WETH 的闪电贷,这些资金可用于执行 24 次 WETH 与 STA 代币来回交换,使得 Balancer 资金池中的 STA 余额在多次交换之后被耗尽,最终剩下 1 weiSTA (0.000000000000000001 STA)。

之所以出现这种现象,可能是因为 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 资金池中的份额。接下来通过 Uniswap V2 将所获得的 Balancer 资金池代币兑换出 13.6 万 STA 代币,接着又再次将这些代币兑换成 109 WETH,所有被盗的资金目前都已被转移到该地址:0xbf675c80540111a310b06e1482f9127ef4e7469a。

1inch 技术分析头部 DeFi 协议 Balancer 通缩代币资金池攻击细节

本次攻击的幕后推手很可能是一个非常老练的智能合约工程师,对头部 DeFi 协议有着非常深刻地理解和认知。这次袭击显然是有组织的,且事先做了充分准备。此外,攻击者还使用了Tornado Cash来获得初始资金,可以隐藏兑换的以太币(Ether)的来源,因而这些资金被用于部署智能合约或实施攻击。

来源链接:medium.com

发表评论

0 个回复