bZx协议再次遭到攻击,共计损失价值逾800万资产。另一方面,去中心化保险NexusMutual的有效保额突破了2亿美元,较昨日翻倍。
撰文:张改娟
昨日,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官方:借贷池已恢复 被盗资金不在团队钱包:9月16日早间,去中心化借贷协议bZx发布iToken重复事故报告。报告指出,丢失的资产已经全部找回,并已存放至团队的钱包中,将恢复借贷池。另外,团队向漏洞报告者MarcThelan支付了4.5万美元的赏金。随后,bZx更新进展称,借贷池已恢复,资金已不在团队钱包。此外,区块链安全公司PeckShield向bZx社区致信称,此前对该项目进行了多轮安全,并发现了16个不同严重级别的问题。此次iToken重复事件表明,要识别所有潜在问题是一个巨大的挑战。我们一直在审计报告中强调,一次审计可能还不够,建议进行多次审计以及提供bug赏金计划。bZx和PeckShield正在制定一项计划,以重新检查该协议并在一些关键的区块链数据指标上进行实时监控。此前9月13日,bZx因合约漏洞被盗4700枚ETH,随后官方采取措施促使黑客将资金归还。[2020/9/16]
bZx表示,目前该函数异常行为已被修复,协议也已恢复正常运行。借款和交易未受到影响,用户不会受到资金风险。bZx也已部署了新版本的iToken合约,并针对重复事故重设了余额。修复后的代码已发送给区块链安全公司Peckshield和Certik进行审查。目前iToken的铸造和销毁已恢复。
bZx协议遭遇攻击现已修复 被盗资金已从保险资金中扣除:9月14日,bZx官方发推特称,在美东时间上午3:28(北京时间9月13日15:30),我们开始研究该协议TVL的下降。到美东时间上午6:18(北京时间9月13日18:30),我们确认几个iToken发生了重复事件。借贷暂时暂停。重复方法已从iToken合同代码中修补出来,并且协议已恢复正常运行。随后,1inch联合创始人Anton Bukov发推称攻击者在此次事件中盗取了约4700枚ETH,并附上被盗资金地址。对此,bZx回应称,资金目前没有风险。列出的那些资金已从我们的保险基金中扣除。[2020/9/14]
bZx披露的信息显示,此次重复事故发生后已将以下债务添加至其保险基金中,包括近22万LINK、4502ETH、175.64万USDT、141.20万USDC、以及66.80万DAI,按当前价格计算,总价值逾800万美元,具体如下:
声音 | bZx 联合创始人 :1inch 团队威胁我们:2 月 21 日,针对 1inch.exchange 官方发布详述其与 bZx 团队接触过程的文章,bZx 联合创始人 Kyle Joseph Kistner 在推特上留言称,对于他们的回复,1inch 团队威胁了他们。不过,1inch 随即回应称,他们并没有行威胁之事:“伙计,我们只是说你不应该在截图上公开我们的照片和名字,否则我们有办法阻止。”(区块律动)[2020/2/21]
219,199.66LINK4,502.70ETH1,756,351.27USDT1,412,048.48USDC667,988.62DAI去中心化借贷协议Compound创始人RobertLeshner表示,这意味着bZx损失了价值800多万的资产,并建议bZx重新审计合约,而不是仅向用户表示「nobigdeal」。
动态 | bZx:第二次攻击是oracle操作攻击 与此前不同:Defi协议bZx再次遭受攻击。对此,BZX发推称,第二次攻击是一次oracle操作攻击,与第一次攻击完全不同。攻击者从系统中获得了大约60万美元的净利润。Kyber上的sUSD储备金包含APR和Uniswap池。我们认为,攻击者能够同时操纵这两者,并绕过相关检查。我们将实施一项更改,允许交易者和借款方平仓。在此期间我们将加强协议安全以确保不会再次发生类似事件。另外,我们正在与chainlink和其他Oracle网络合作,以创建更安全的Oracle网络和缩小协议可攻击范围。Bitcoinist指出,bZx遭受二次攻击表明需要对DeFi智能合约进行彻底审计。[2020/2/19]
针对bZx协议被攻击一事,Bitcoin.com首席工程师MarcThelan表示,昨晚其在bZx中发现了该漏洞,有价值超过2000万美元的资产处于危险之中。MarcThelan称其将该漏洞告知了bZx团队,但该团队反应过于缓慢。等到bZx团队获悉该漏洞时,攻击者几乎已经耗尽了Dai和USDC资产。如果攻击者有更多时间,可能会耗尽整个池子。bZx的一位创始人在电报群中表示,团队安全小组建议给MarcThelan1.25万美元的赏金。
声音 | DeFi贷款协议bZx声明:并没有用Uniswap喂价:DeFi贷款协议bZx发表声明称,此次操纵事件导致市面上出现很多不实流传,但bZx并没有用Uniswap喂价,Uniswap只是多个流动性来源之一。此前消息,去中心化金融(DeFi)贷款协议bZx被操纵导致以太坊损失,联合创始人KyleKistner表示,部分ETH(已)损失,此次事件是因为一个合约被利用导致的,目前bZx已暂时关闭该合约。安全研究人员目前在调查导致事故的确切原因,并表示,会发布详细的事后调查报告,目前剩余的资金是安全的。因为此次事件,bZx关闭了Fulcrum交易平台进行维护。DeFiPulse的数据显示,过去的24小时内,bZx协议中提出ETH达3300枚,约合93.2万美元,业内人士估测,此次损失金额约为35万美元。dForce&Blockpower创始人杨民道称此次事件是利用了四个DeFi协议之间做的操纵。整个操作路径是,操纵人从dydx的闪贷借出1万ETH,使用其中5000ETH在Compound借出112WBTC,5000ETH到bZx上开了WBTC的空单,用Compound借的WBTC去Uniswap砸盘,导致bZx空仓大赚,bZx的ETH出借人亏损。(链闻)[2020/2/16]
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余额的转移,从而防止用户人为增加自己的余额。
修复后的代码
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。