北京时间2022年5月30日21::46:19,,CertiK审计团队监测到一起针对Mirror Protocol的攻击。截至撰稿时,总损失约为200万美元。
此次攻击的主要原因在于Terra验证节点在分叉后没有更新,导致价格预言机不准确——报告了LUNA(价格为5美元),而非实际的LUNC(价格为0.0001美元)。
这使得用户通过抵押LUNC借贷到的资产远大于提供抵押的金额。
漏洞交易
https://finder.terra.money/classic/tx/F830681D8FEACC4DA67E84D40C49F0FF805609F2BB5CCC39A0EFE66257F2D791
参考:https://forum.mirror.finance/t/another-exploit/3511
攻击步骤
该次攻击中有多笔用户存入LUNC并借贷其他资产的交易。
某次交易示例如下:
由于Terra验证节点没有及时更新价格预言机,该笔交易允许攻击者抵押10万枚LUNC(价值10美元)贷款30,275枚DOT(价值约30万美元)。
漏洞分析
在Terra分叉之后,现在的Terra已分为:
①Terra Classic,LUNA(LUNC)价值0.0001美元。
②Terra 2.0,其LUNA价格约为5美元。
Mirror protocol运行于旧的Terra链(现称为Terra Classic)上,并使用Terra Classic提供的价格预言机服务来确定LUNA价格。
然而,一些验证者在Terra Classic分叉后并没有更新他们的软件,并且报告的是分叉后的LUNA价格而非LUNC的价格。
例如在下方这笔交易中,Terra Classic的验证节点报告的LUNC价格约为5美元,而不是0.0001美元。
在正常情况下,假如一个用户想在Mirror protocol上进行贷款,他需要提供更多的抵押品以进行借贷,比如提供2万美元的抵押来借贷1万美元。
也就是需要提供整整2亿枚价值0.0001美元的LUNC代币来进行抵押,但如果是使用价值5美元的LUNA,则只需要提供4000枚。
然而,由于一些验证器已经过时,导致预言机提供了LUNA的价格而非LUNC的价格,攻击者仅需提供4000枚LUNC(价值0.4美元)即可借贷到1万美元。
目前,如Orion.money的部分验证者已修复该漏洞:
Orion.money昨日提供的LUNA价格
Orion.money今日提供的LUNC价格
资产去向
据FatManTerra证明,Mirror protocol的损失已达200万美元。
因价格预言机导致的攻击事件绝非一例,预言机不应成为链上「套利」专用工具。
加密领域安全风险层出不穷,项目团队应尽可能提高相关警惕并时刻关注安全事件以自查,并及时完善和审计合约代码。
参考链接:
-
https://twitter.com/FatManTerra/status/1531365988809293825
-
https://finder.terra.money/classic/tx/F830681D8FEACC4DA67E84D40C49F0FF805609F2BB5CCC39A0EFE66257F2D791
-
https://forum.mirror.finance/t/another-exploit/3511
-
https://twitter.com/ChainLinkGod/status/1531384782046711808
-
https://twitter.com/blockpane/status/1531369644531101696
-
https://cointelegraph.com/news/luna-classic-lunc-pricing-error-leads-to-mirror-protocol-exploit