前言
北京时间12月13日,知道创宇区块链安全实验室?关注到针对Definer预言机的攻击事件。
作为第三方区块链安全机构,受Definer、Cherryswap和OEC组成的调查小组邀请参与本次攻击事件的技术调查工作。实验室第一时间启动应急,跟踪本次事件进行分析并出具调查报告。
分析
tx:https://www.oklink.com/en/oec/tx/0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a?tab=4
摩根大通:Ripple案将为加密货币是否构成证券提供法律明确性和辩护:金色财经报道,摩根大通周五在一份研究报告中写道,美国南区法院部分支持支付网络 Ripple 的裁决代表着加密货币行业的一次里程碑式的胜利。它就什么构成和不构成证券提供了法律明确性和辩护,总体结果有利于业内许多人一直争论的问题。[2023/7/15 10:56:23]
攻击者信息
攻击tx:0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a
攻击合约:0x05806559f7f7732f2d3e71bca2eb12eab1938ceb
数据:4月4日以来狗狗币前5名巨鲸中的2名减持约14亿枚DOGE:金色财经报道,链上分析师Lookonchain发推文称,在马斯克将推特LOGO从蓝鸟改为狗狗(4月4日)再改为蓝鸟(4月7日)期间,狗狗币前5名持有者中的2名巨鲸减持了约14亿枚DOGE(约合1.21亿美元)。
“DDuX”开头的巨鲸地址(第5位持有者)减持了11亿枚DOGE(约合9520万美元),“D8ZE”开头的巨鲸地址(第3位持有者)减持了3亿枚DOGE(约合2860万美元)。[2023/4/7 13:50:05]
被攻击池信息
USDT池:0xc1b02e52e9512519edf99671931772e452fb4399
华企中联携手数藏中国推出“冠军人生”系列第一期数字藏品:金色财经报道,由华企中联推出的“冠军人生”系列第一期数字藏品,将于8月14日在数藏中国数字藏品平台发行。
本系列全新数字藏品共有6款,分别为:泳冠--庞佳颖R、万生--钱震华R、万生—钱震华R、彩渡—庞佳颖SR、狂歌—钱震华SR、超越—钱震华SSR、长啸—庞佳颖SSR,以盲盒的形式发行。同时,该系列还结合了可进阶卡牌的玩法,每一种稀有度的藏品均拥有不同的赋能权益。[2022/8/14 12:23:49]
OKB池:0xd63b340F6e9CCcF0c997c83C8d036fa53B113546
元宇宙基础设施平台InfiniteWorld拟通过SPAC方式上市募集1.45亿美元:8月4日消息,元宇宙基础设施平台 InfiniteWorld 计划通过 SPAC(特殊目的收购公司)方式上市,该公司希望与 Aries I Acquisition Corporation(RAM)一同进行 SPAC,并在公开市场筹集 1.45 亿美元。
此外,InfiniteWorld 还宣布收购游戏工作室 Super Bit Machine,但具体收购金额暂未对外披露。Super Bit Machine 拥有围绕游戏和游戏基础设施的可扩展技术,本次收购将提升 InfiniteWorld 为品牌客户提供 Web3 体验和虚拟世界服务。(venturebeat)[2022/8/5 12:03:16]
BTCK池:0x33a32f0ad4aa704e28c93ed8ffa61d50d51622a7
ETHK池:0x75dcd2536a5f414b8f90bb7f2f3c015a26dc8c79
攻击流程
合约方面调用流程
1、攻击合约0x058065调用CherrySwap的FlashSwap功能进行闪电贷,贷出了CHE/OKB池子中几乎全部的CHE。此时池子仅剩极少量CHE
2、抵押给Definer借款来的1000个CHE,Definer预言机计算价格依赖CherrySwap池中两种代币的余额比例,导致Definer预言机计算1000个CHE价格失准,1000个CHE的价值被认为极大值。
3、攻击者借出USDT池子约462,318个USDT
4、攻击者借出OKB池子约37,172个OKB
5、攻击者借出BTCK池子约3个BTCK
6、攻击者借出ETHK池子约8个ETHK
7、攻击者通过CherrySwap的CHE/USDT池子利用10,000个USDT换出30,765个CHE
8、归还CherrySwap闪电贷1,575,093个CHE
漏洞细节
根据Definer各合约部署地址(https://docs.definer.org/deployed-contracts/addresses),由于预言机实现过程通过CherrySwap池子的两个Token在池子的余额来判断价格:
预言机实现过程中没有考虑到闪电贷贷出时余额大量减少的情况,导致了Definer项目方预言机计算失准,从而导致了该事件。
以USDT池子为例:
从具体Transaction中我们跟进到SavingAccount合约的逻辑合约0xc1b02e52e9512519edf99671931772e452fb4399#priceFromAddress
在该函数中使用AggregatorInterface(tokenInfo.chainLinkOracle)的预言机来询价
排查获取AggregatorInterface中具体调用地址发现,其映射变量位于TokenRegistry合约:
而TokenRegistry的合约部署地址根据官方的deployed-contracts/addresses可知位于0x0E16Ada9C4Cf95d6722c65504555124A241DdA81?
在该地址通过对CHE代币地址0x8179d97eb6488860d816e3ecafe694a4153f216c查询得到对应使用的预言机:
该地址即为存在漏洞的预言机地址:
总结
本次事件是由于Definer在OEC对于预言机的实现存在问题,使用了单一流动池在一个时间点的池内代币余额作为价格源从而导致了事故的发生,而以太坊的实现则使用了ChainLink的预言机不存在该问题。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。