bZx 年内上演安全问题「 帽子戏法」 DeFi 安全「危」与「机」并存_BZX:usdn币还能回到1吗

昨日,DeFi借贷协议bZx年内第三次遭到攻击,由于代码重复事故导致共计损失价值超800万的资产,这距离BZx新版本部署仅不到两周。受此影响,bZx代币BZRX过去?24小时跌近30%,从0.6679USDT一度跌至0.4USDT,发文时暂报0.44USDT。

BZRX30分钟K线图,来源:币安

与此同时,bZx?锁仓量较昨日暴跌99.71%,几乎归零,目前仅为176美元。

北京时间9月14日下午3点半左右,bZx发现其协议总锁定价值出现显著下降。大约3小时后bZx确认多个iToken发生了重复事故,即iToken合约中的_internalTransferFrom()函数出现异常行为,攻击者利用了相同的_from和_to地址调用了传输函数。确认问题后bZx随即暂停了放贷操作。

bZx表示,目前该函数异常行为已被修复,协议也已恢复正常运行。借款和交易未受到影响,用户不会受到资金风险。bZx也已部署了新版本的iToken合约,并针对重复事故重设了余额。修复后的代码已发送给区块链安全公司Peckshield和Certik进行审查。目前iToken的铸造和销毁已恢复。

bZx披露的信息显示,此次重复事故发生后已将以下债务添加至其保险基金中,包括近22万LINK、4502ETH、175.64万USDT、141.20万USDC、以及66.80万DAI,按当前价格计算,总价值逾800万美元,具体如下:

219,199.66LINK

4,502.70ETH

1,756,351.27USDT

1,412,048.48USDC

667,988.62DAI

去中心化借贷协议Compound创始人RobertLeshner表示,这意味着bZx损失了价值800多万的资产,并建议bZx重新审计合约,而不是仅向用户表示「nobigdeal」。

针对bZx协议被攻击一事,Bitcoin.com首席工程师MarcThelan表示,昨晚其在bZx中发现了该漏洞,有价值超过2000万美元的资产处于危险之中。MarcThelan称其将该漏洞告知了bZx团队,但该团队反应过于缓慢。等到bZx团队获悉该漏洞时,攻击者几乎已经耗尽了Dai和USDC资产。如果攻击者有更多时间,可能会耗尽整个池子。bZx的一位创始人在电报群中表示,团队安全小组建议给MarcThelan1.25万美元的赏金。

1inch联合创始人AntonBukon此前也发现了该漏洞,其表示,「我们发现有人在两天前就利用该漏洞将自己的余额增加到1.536亿枚iUSDT,并开始从USDT池中转走,直到bZx协议管理员销毁了1.519亿枚iUSDT,这表明似乎有170万USDT被盗。」

关于bZx协议管理员销毁iUSDT一事,以太坊开发人员RomanSemenov解释称,bZx协议管理员使用了一个允许其销毁任何用户资金的后门,然后将代币的实现状态更新为未经验证。在销毁一些涉及攻击的用户资金后,他们再次将其更新为漏洞修复后的正常实现。

bZx进一步解释称,该协议此前已经过区块链安全公司Peckshield及Certik的安全审计,并进行了大量的自动化测试,但通过审计并不能确保协议100%安全。Peckshield及Certik正在分析此次事件的根本原因。

DeFi项目频繁遭受攻击,刺激去中心化保险需求

事实上,这并不是bZx协议首次受到攻击。今年2月中旬,bZx协议曾两次受到攻击,共计损失价值逾90多万的资产。当月中旬,bZx联合创始人KyleKistner表示,「部分ETH已损失,此次事件是因为一个合约被利用导致的,其他资金是安全的。」业内人士估测,此次损失金额约为35万美元。

3天后,bZx再次受到攻击。bZx表示又发现了一次使用闪电贷进行的可疑交易,攻击者后续使用了Synthetix交易,不过没有影响到Synthetix系统。

除bZx之外,近期随着DeFi热度的大幅提升,安全问题成为了DeFi行业的最大挑战。据PeckShield数据显示,八月共发生安全事件28起,其中DeFi市场就发生了8起。

正因如此,去中心化保险的市场需求应运而生。NexusMutualTracker数据显示,截至目前,去中心化保险NexusMutual的有效保额突破了2亿美元,较之两个月前,该数值已经增长逾20倍。

而在过去短短的24小时左右时间里,该数据就大涨130%,今日bZx的安全事故显然成为了去中心化保险「大跃进式」增长的重要催化剂。

去中心化保险NexusMutual的有效保额,来源:NexusMutualTracker

可以想象,随着DeFi市场的持续发展,去中心化保险、预言机等细分市场有望继续保持增长势头。

bZx协议代码安全漏洞的技术细节与进展更新

根据bZx发布的漏洞?报告,此次事件发生后的团队所采取的进展以及技术细节如下:

团队注意到协议总锁定价值出现了异常变动;

在iToken上识别出与_internalTransferFrom()函数相关的异常行为;

团队在确定修复方案后暂停了iToken的铸造和销毁,不过,借款和交易并未受到影响;

部署了新版本的iToken合约,并重设了余额;

修复后的代码已发送给Peckshield和Certik进行审查;

恢复iToken的铸造和销毁。

在以太坊ERC20代币中,TransferFrom()函数是将一定数量的代币从一个地址转移至另一个地址的执行操作,即从地址_from发送_value个token到地址_to。

此次iToken重复事故正是攻击者利用了相同的_from和_to地址调用了传输函数。

有误的代码

当_from和_to地址相同时,会导致_balancesFrom和_balancesTo相等。

有误的代码

上述问题导致再减少_balancesFrom余额的情况下增加了_balancesTo的余额,并且还保存了_balancesFromNew和_balancesToNew,这会导致用户能够人为地增加自己的余额。

修复后的代码在balances余额减少后,会进行balancesTo余额的转移,从而防止用户人为增加自己的余额。

修复后的代码

撰文:张改娟

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-3:652ms