首发|空手套以太:Balancer攻击解析

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

6月29日北京时间清晨2点03分,CertiK天网体系(Skynet)检查到在区块10355807处BalancerDeFi合约异常,安全研究员迅速介入调查,进犯过程浮出水面。

事情概述

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闪电贷,离场。
阶段1:?从Balancer中取光所有的STA
前24笔买卖将从闪电贷中借到的WETH买卖为STA,尽或许降低Balancer中的STA数目,然后提升STA对其他代币的价格。
阶段2:将STA买卖为WETH,运用gulp函数缝隙操控价格
在阶段2开始时候,STA的总数目始终被gulp函数重置为之前的1e-18。在第一次经过swapExactAmountIn函数将STA买卖为WETH时,进犯者成心将STA买卖的数目设为1e-18,因为在买卖模型中,STA的数目极小,因此STA的价格相对其他代币会极高。在完结第一次买卖后,在Balancer中STA的数目应为2e-18。
在第2次经过swapExactAmountIn将STA买卖为WETH之前,进犯者经过调用gulp函数,将在Balancer中的STA数目运用内部记载的1e-18来覆盖当前STA的实在数目(2e-18)。因此在购买WETH时,STA依然能够坚持高价。可是因为购买WETH后,WETH的数量减少,每次进犯的非法所得逐步减小,18次进犯后,Balancer中的WETH被彻底盗取。
阶段3:搬运目标
当Balancer中的WETH被彻底盗取后,进犯者运用相同缝隙,对Balacner的其他代币(WBTC,LINK和SNX)重演进犯,盗光了4种代币后隐遁。

进犯者获利

进犯者进犯地址:
0x81D73c55458f024CDC82BbF27468A2dEAA631407

进犯者终究收款地址:
0xbf675c80540111a310b06e1482f9127ef4e7469a

进犯者终究获利:565.5326240837032ETH,约合90万人民币(北京时间20200630早9点30分价格)

缝隙分析

Balancer合约的gulp函数作用为将某一种代币的内部记载数值覆盖到当前该种代币的实在数目,可是过错的把他设置成没有约束的external函数。gulp函数不该该为external,或许应该加入对于特定运用者或许智能合约具有者的验证或许防护约束条件。

参考资料:

1.BalancerGithub:
https://github.com/balancer-labs/balancer-core/blob/140df49361a58e6c79b395964be98387702a7c0d/contracts/BPool.sol#L334
https://github.com/balancer-labs/balancer-core/blob/140df49361a58e6c79b395964be98387702a7c0d/contracts/BMath.sol#L28
https://github.com/balancer-labs/balancer-core/blob/140df49361a58e6c79b395964be98387702a7c0d/contracts/BPool.sol#L423

2.进犯买卖历史记载:
https://ethtx.info/mainnet/0x013be97768b702fe8eccef1a40544d5ecb3c1961ad5f87fee4d16fdc08c78106

3.官方进犯报告:
https://medium.com/balancer-protocol/incident-with-non-standard-erc20-deflationary-tOKens-95a0f6d46dea

了解更多

General?Information:?info@certik.org
Audit?&?Partnerships:?bd@certik.org
Website:?certik.org
Twitter:?@certik.org
Telegram:?t.me/certik.org
Medium:medium.com/certik
币乎:bihu.com/people/1093109

此时快讯

【Alchemix:黑客已全部归还Alchemix Curve池中被盗资金】8月6日消息,DeFi借贷协议Alchemix发推称,此前黑客在Alchemix Curve池中盗取的资金现已全部归还,不久后将发布完整报告。
金色财经此前消息,Alchemix于7月31日发推称alETH/ETH Curve池遭遇攻击损失约5000枚ETH。Alchemix要求黑客在8月6日前退还90%资金,赏金为10%,alETH池黑客于8月4日向Alchemix先后返还1000枚alETH、3819.55枚alETH。

版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:首发|空手套以太:Balancer攻击解析 | 币百度

相关文章