原文标题:《空手套以太: Balancer 攻击解析》 6 月 29 日北京时间凌晨 2 点 03 分,CertiK 天网系统 (Skynet) 检查到在区块 10355807 处 Balancer DeFi 合约异常,安全研究员迅速介入调查,攻击过程浮出水面。 事件概述 6 月 29 日凌晨 2 点 03 分,攻击者利用从 dYdX 闪电贷中借到的 WETH,大量买进 STA 代币,使得 STA 与其他代币的兑换价格急剧上升。然后使用最小量的 STA (数值为 1e-18)不断回购 WETH,并在每次回购后,利用 Balancer 的合约漏洞重置其内部 STA 的数量(数值为 1e-18),以此稳住 STA 的高价位。 攻击者不断利用漏洞,用高价的 STA 将某一种代币完全买空(WETH,WBTC, LINK 和 SNX),最终用 WETH 偿还闪电贷,并剩余大量 STA,WETH,WBTC, LINK 和 SNX,并通过 uniswap 将非法所得转移到自己账户中。此次攻击约获利 90 万人民币。 CertiK 分析的此次事件攻击者心理画像: 攻击者在调取 STA 余额后,快速调用 swapExactAmountIn 函数购买 STA,并在第 24 次交易使用了另一个函数 swapExactAmountOut 精准的将 STA 的数目买到了最小值(1e-18),从而最大化后续攻击的效率。最开始的 6 笔交易,在没有必要的情况下,3 次买入后卖出,损失了 4 个 WETH,故布疑云。并且能够做到隐匿自己的闪电贷阶段痕迹来看,有黑客特性。 CertiK 判断攻击者是有经验的黑客团队在充分准备后的一次攻击尝试,有很大可能还会继续攻击其他 DeFi 合约。 攻击重现 阶段 0:攻击者从 dYdX 闪电贷处借款,获得初始 WETH 资金。 阶段 1:攻击者使用 WETH 将 Balancer 中的 STA 尽可能买空,最大程度提高 STA 价格。 阶段 2:攻击者用获得的 STA 多次买回 WETH。每一次都用最小量的 STA (数值为 1e-18)进行购买,并利用 Balancer 内部漏洞函数 gulp(),锁定 STA 的数目,控制 STA 对 WETH 的价格。重复多次该种买回操作,直到将 Balancer 中的 WETH 取空。 阶段 3:换一种代币,用 STA 重复阶段 2 直到取空该种代币。阶段三重复了三次,一共有 4 种代币受到了损失 WETH,WBTC, LINK 和 SNX。 阶段 4:偿还 dYdX 闪电贷,离场。 攻击者获利 攻击者攻击地址: 0x81D73c55458f024CDC82BbF27468A2dEAA631407 攻击者最终收款地址: 0xbf675c80540111a310b06e1482f9127ef4e7469a 攻击者最终获利:565.5326240837032 ETH, 约合 90 万人民币(北京时间 20200630 早 9 点 30 分价格) 漏洞分析 Balancer 合约的 gulp() 函数作用为将某一种代币的内部记录数值覆盖到当前该种代币的真实数目,但是错误的把他设置成没有限制的 external 函数。gulp() 函数不应该为 external,或者应该加入对于特定使用者或者智能合约拥有者的验证或者防护限制条件。
来源链接:mp.weixin.qq.com —- 编译者/作者:CertiK 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
CertiK:简析当红流动性挖矿项目 Balancer 遭攻击始末
2020-06-30 CertiK 来源:链闻
LOADING...
相关阅读:
- 尽管围绕ETH 2.0进行了炒作,但技术指标仍对以太坊造成了麻烦2020-08-07
- 带有SEC的灰度级以太坊信任文件将ETHE锁定期减半与GBTC相同2020-08-07
- Celil?ztürk:“比特币是一场革命,以太坊是互补的”2020-08-07
- Binance IEO项目,波段协议,在上市新闻中看到了Coinbase的影响; 接下来2020-08-06
- 加密货币投资论文Redux。 过去十二年来发生了很大变化……| 由Garric2020-08-06