EFI:Definer 预言机攻击事件分析

前言

北京时间12月13日,知道创宇区块链安全实验室?关注到针对Definer预言机的攻击事件。

作为第三方区块链安全机构,受Definer、Cherryswap和OEC组成的调查小组邀请参与本次攻击事件的技术调查工作。实验室第一时间启动应急,跟踪本次事件进行分析并出具调查报告。

分析

tx:https://www.oklink.com/en/oec/tx/0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a?tab=4

DeFi借贷协议EasyFi推出开发者基金和资助计划:12月5日消息,DeFi借贷协议EasyFi Network推出其#BuildWithEasyFi计划,以鼓励开发者社区利用EasyFi生态系统提供的各种好处。作为该计划的一部分,EasyFi宣布一项开发者基金和资助计划,有前途的项目和个人可以获得构建其产品所需的资金,从而促进EasyFi Network的发展。

根据其说法,开发者基金已经成为2021年路线图的一部分。该基金将鼓励开放式基础设施开发,为开发者社区提供EasyFi的资源,以加速整个DeFi生态系统的整体增长。EasyFi开发者基金和资助计划现已开始接受申请。(NewsBTC)[2021/12/5 12:52:39]

攻击者信息

数据:当前DeFi协议总锁仓量为2678.6亿美元:11月26日消息,据Defi Llama数据显示,目前DeFi协议总锁仓量2678.6亿美元,24小时增加了1.34%。锁仓资产排名前五分别为Curve(209.4亿美元)、Maker DAO(189.2亿美元)、Convex Finance(158.7亿美元)、AAVE(158.4亿美元)、WBTC(143.5亿美元)。[2021/11/26 22:19:45]

攻击tx:0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a

万卉:UNI空投终结了DeFi世界中不可持续的金钱印刷:Primitive Ventures创始合伙人万卉通过推特表示:UNI空投是DeFi世界不可持续的金钱印刷的最后一滴墨。

其他人只是简单地在新手市场以超乎想象的价格出售一个关于UNI杀手的不确切的故事。当UNI将他们残害,一切回到炒作周期的自然过程当中。[2020/9/23]

攻击合约:0x05806559f7f7732f2d3e71bca2eb12eab1938ceb

被攻击池信息

USDT池:0xc1b02e52e9512519edf99671931772e452fb4399

韦氏评级:DeFi最终将被用于真正的经济活动:金色财经报道,加密货币评级机构韦氏评级(Weiss Ratings)发推文称,加密行业(包括DeFi)中的每项优秀创新都是从投机开始的,然后转向了实际的用例。DeFi现在可能是一个泡沫,但最终这些基础设施将被用于真正的经济活动。[2020/7/8]

OKB池:0xd63b340F6e9CCcF0c997c83C8d036fa53B113546

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的预言机不存在该问题。

来源:金色财经

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

链链资讯

FTTHTT:加密十年 你不知道的趣事太多了

今天我们抱着怀旧的心态,回顾一下比特币和加密货币历史上一些最特别、最滑稽,以及最有趣的时刻。1.2011年2月-当R0gerVer第一次研究比特币时,因为对比特币及其提供的机会感到异常兴奋,以至.

[0:15ms0-8:714ms