木星链 木星链
Ctrl+D收藏木星链
首页 > Uniswap > 正文

ETH:硬核技术解析,bZx协议遭黑客漏洞攻击始末

作者:

时间:1900/1/1 0:00:00

02月15日,bZx团队在官方电报群上发出公告,称有黑客对bZx协议进行了漏洞攻击,且已暂停除了借贷外的其他功能。对于攻击细节,bZx官方并没有进行详细披露。

PeckShield安全人员主动跟进bZx攻击事件,发现这起事件是针对DeFi项目间共享可组合流动性的设计进行攻击,特别在有杠杆交易及借贷功能的DeFi项目里,该问题会更容易被利用。

Figure1:FiveArbitrageStepsinbZxHack

漏洞的攻击细节如下:

此攻击事件发生在北京时间2020-02-1509:38:57。攻击者的transaction信息可以在?etherscan?上查到。此攻击过程可以分为以下五个步骤:

第一步:闪贷获取可用资金

攻击者通过在部署的合约中调用了?dYdX闪贷功能借入了10,000个?ETH。这部分是已知的dYdX的基本借贷功能,我们不做进一步解释。

PeckShield:Conic Finance遭攻击根本原因在于新的CurveLPOracle V2合约:7月21日消息,区块链安全机构 PeckShield 针对 Conic Finance 遭到攻击事件分析称,初步分析显示根本原因来自于新的 CurveLPOracle V2 合约,其审计也发现了类似的只读重入问题。然而,新推出的 CurveLPOracleV2 合约中也出现了同样的问题,该合约不属于审计范围。

今日早些时候报道,Conic Finance遭受攻击,损失约320万美元。[2023/7/21 15:51:07]

Figure2:FlashloanBorrowingFromdYdX

当第一步操作过后,如下表中攻击者资产,此时并没有收益:

第二步:囤积WBTC现货

通过第一步闪贷获得ETH后,攻击者将其中的5,500ETH存入Compound作为抵押品,贷出112WBTC。这也是正常的Compound借贷操作,贷出的WBTC将在第四步中被抛售。

瑞波CEO:最近的裁决对SEC来说是彻底失败:金色财经报道,瑞波实验室首席执行官Brad Garlinghouse坚持认为,最近美国法院的裁决代表了SEC的彻底失败,而不是赢得部分胜利。Garlinghouse在回应记者提问时表示,正如几位律师所指出的那样,SEC在所有重要的事情上都输了,而不仅仅是瑞波币上。他补充称,SEC试图将最近的裁决描绘成某种“分裂的胜利”,这是可悲的。“关于潜在的处罚问题,这要由法院来决定,而不是SEC。大家都很清楚,这个案子(的重点)从来不是关于罚款或处罚的,而是关于确立瑞波币的非证券地位。(在这个问题上)我们赢了。他们输了。(U.Today)[2023/7/16 10:57:29]

Figure3:WBTCHoardingFromCompound

在此步骤操作后,我们可以看到关于攻击者控制的资产发生了改变,但此时仍然没有获益:

第三步:杠杆拉盘WBTC价格

利用bZx的杠杆交易功能,做空ETH购入大量WBTC。具体步骤是:攻击者存入1,300ETH并调用bZx杠杆交易功能,即接口mintWithEther(),在内部会继续调用接口marginTradeFromDeposit()。接下来,攻击者将从bZx5倍杠杆获得的5,637.62个ETH,通过?KyberSwap兑换成51.345576WBTC。请注意,此处做空ETH是借来的5倍。本次交易导致将WETH/WBTC的兑换率提高到109.8,大约是正常兑换率的3倍。

数据:ENS 域名成交总额突破 2 亿美元:12月13日消息,据 NFTGo.io 数据显示,ENS 域名成交总额已突破 2 亿美元,截至目前达到 2.0008 亿美元,市值为 9739 万美元。过去 24 小时 ENS 交易额为 47.815 万美元。历史数据显示,ENS 域名成交额于今年 7 月底首次超过 1 亿美元。[2022/12/13 21:42:02]

为了完成此交易,KyberSwap基本上会查询其储备金并找到最优惠的汇率,最终只有Uniswap能提供这样的流通性,因此这个交易从本质上推动了Uniswap中WBTC价格上涨了3倍。

Figure4:MarginPumpingWithbZx(andKyber+Uniswap)

应该注意的是,这步操作在合约内部实现有个安全检查逻辑,但是实际上在交易之后并没有验证锁仓值。也就是说,当攻击发生时,此检查没有启用,我们在后面会有一节详细介绍此合约中的问题。

在这一步之后,我们注意到关于黑客控制的资产有以下改变。不过,在这一步之后仍然没有获利。

四川法院在一起虚拟货币交易案件中判决借条无效且交易平台停止造成的损失风险自担:6月27日消息,近日,四川自由贸易试验区人民法院开庭审理一起虚拟货币交易案件。该案中,王某向李某某转款150万元,约定由李某某在虚拟货币交易平台投资,后因为虚拟货币交易价格下跌,李某某未能按期返还收益,王某限制其人身自由,让李某某出具借条一份,约定李某某转给王某一定数量的虚拟货币,作为最终在交易平台出售实际金额以抵销上述债务。李某某按约转虚拟货币给王某后,因为交易平台停止运营,王某只出售了部分虚拟货币并提现,剩余部分无法交易,故诉至法院,请求李某某偿还剩余款项。

法院经审理认为,此案不符合一般民间借贷的逻辑和交易习惯,故认定双方不存在借贷合意。其次,投资虚拟货币,是未经批准的非法投资行为,不能受到法律保护,剩余虚拟货币未予抵销系因虚拟货币交易平台停止,由此产生的风险和损失,应由王某自行承担。故判决驳回王某的诉讼请求,后王某提出上诉,二审法院驳回上诉,维持原判。(央广网)[2022/6/27 1:33:32]

第四步:抛售WBTC现货

在Uniswap中WBTC价格飙升后,攻击者将第二步中通过Compound借的112WBTC全部卖给Uniswap并返还了相应的WETH。

这次交易攻击者共计获得6,871.41个ETH的净额作为回报。在这一步之后,可以看到攻击者已经获得不少利润。

美国纽约证券交易所总裁马丁:在没监管的加密货币领域做事是一种挑战:6月14日消息,美国纽约证券交易所总裁马丁表示,在没有监管的情况下,在加密货币领域做更多事情是一种挑战。(金十)[2022/6/14 4:24:01]

Figure5:WBTCDumpingWithUniswap

第五步:闪贷还款

攻击者从抛售的112WBTC中获得的6,871.41个ETH,将闪贷的10,000个ETH偿还给dYdX,从而完成闪贷还款。

在这一步之后,我们重新计算了以下资产详情。结果显示,攻击者通过此次攻击获得71ETH,加上这两个锁仓:Compound和bZx。bZx锁仓处于违约状态,Compound的锁仓是有利可图的。显然,在攻击之后,攻击者就开始偿还Compoud债务以赎回抵押的5,500个WETH。由于bZx锁仓已经处于违约状态,攻击者也不再感兴趣了。

参考1WBTC=38.5WETH的平均市场价格,若攻击者以市场价格购入112WBTC花费约需4,300个ETH。此112WBTC用以清偿Compond债务并取回抵押品5,500ETH,则最终攻击者总共获利为?71WETH+5,500WETH-4,300ETH=1,271ETH,合计大约$355,880。

硬核解析:bZx可规避风险代码逻辑缺陷

通过前面攻击者在合约中实现的步骤可以看出,问题的核心原因是在第三步调用marginTradeFromDeposit()通过借贷的1,300ETH,加5倍杠杆来实现做空ETH/WBTC交易的,于是

我们进一步审查合约代码,发现这是一个「可避免的套利机会」,但因为代码存在的逻辑错误造成可用于规避风险的代码逻辑没有生效。具体代码追踪如下:

首先是marginTradeFromDeposit()调用_borrowTokenAndUse(),此处由于是以存入的资产作杠杆交易,第四个参数为true。

在_borrowTokenAndUse()里,当amountIsADeposit为true时,调用_getBorrowAmountAndRate()并且将borrowAmount存入sentAmounts。

在1,355行,sentAmounts被设置为sentAmounts并且于第1,370行调用_borrowTokenAndUseFinal()

经由IBZxinterface进入bZxContract的takeOrderFromiToken()函数。

bZxContract属于另一个合约?iTokens_loanOpeningFunctions?于是我们我们继续分析合约代码,在函数中发现有一个关键的逻辑判断:

在第148行,bZx事实上尝试利用oracle合约的shouldLiquidate()检查这个杠杆交易的仓位是否健康。然而,因为第一个条件已经为true,则继续执行,而忽略了shouldLiquidate()的逻辑判断。

事实上,在合约?BZxOracle?的shouldLiquidate()中实现了对getCurrentMarginAmount()<=loanOrder.maintenanceMarginAmount判断,如果执行到shouldLiquidate()就可以有效避免这个攻击的发生。

如前所述,这是一次很有意思的攻击,它结合了各种有趣的特性,如贷款、杠杆交易和拉高价格等。之所以可能发生这种攻击,是因为当前项目共享可组合流动性的设计。特别是,5倍杠杆交易允许用户以相对较低的成本借入大量代币,加上DeFi项目间共享的流动性,导致交易价格更容易被操控。

标签:ETHBTCWBTWBTCEthereum Goldwbtc币发行价WBTCAWBTC币

Uniswap热门资讯
区块链:V神原文详解:通过及时性检测器(TD)解决区块链的51%攻击问题

注:原文作者是以太坊联合创始人VitalikButerin,在这篇文章中,他提出了一种称为及时性检测器的构造,以试图解决51%攻击的问题.

1900/1/1 0:00:00
加密货币:一周回顾 | 加密货币市场震荡幅度加大,美国央行数字货币遥遥无期

本周,加密货币市场在经历了一段时间的平稳走势之后震荡幅度增大,而在周中美国参众两院举行的听证会上,“数字美元”再次成为议员们关注的热点。加密货币本周加密货币市场整体震荡幅度较大.

1900/1/1 0:00:00
比特币:硬核PK黄金:比特币和黄金,谁是更好的避险资产?(上)

币圈有一个简单粗暴的共识:只要通缩,价格必涨。他们依据的理论基础是新古典经济学的“供需理论”,用以佐证的论据是「黄金」百年抗通胀的数据,得出的结论是“比特币减半利好币价”。笔者认为,以上全错.

1900/1/1 0:00:00
比特币:比特币减产、算力暴涨,16nm矿机“矿难之年”必然降临?

5月11日前后,比特币第三次减产将如期而至。届时,比特币区块奖励将从当前的12.5个/区块减为6.25个/区块,大量老旧矿机的命运也将因此改写.

1900/1/1 0:00:00
比特币:观点 | 美联储降息作用有限,比特币不能与黄金相提并论

最近加密货币市场行情跌宕起伏,但相比之下,全球金融市场表现出了更为痛苦的挣扎,美股连续暴跌,全球股市大幅走低,减产协议破裂,原油价格暴跌,进一步促发美股熔断,恐慌指数创新高,疫情的影响.

1900/1/1 0:00:00
比特币:引介 | tBTC:一种新的比特币侧链设计

tBTC是近期在以太坊公布的一种比特币锚定代币。跨链锚定代币的目的是在尽可能保持资产特性的情况下,将资产从一条链复制到另一条链上。换言之,一条跨链能将任何区块链变成一条比特币侧链.

1900/1/1 0:00:00