前言
北京时间12月13日,知道创宇区块链安全实验室?关注到针对Definer预言机的攻击事件。
作为第三方区块链安全机构,受Definer、Cherryswap和OEC组成的调查小组邀请参与本次攻击事件的技术调查工作。实验室第一时间启动应急,跟踪本次事件进行分析并出具调查报告。
分析
tx:https://www.oklink.com/en/oec/tx/0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a?tab=4
DeFi借贷协议Alchemix发布ALCX奖励合约错误详情,将公布ALCX奖励恢复时间:官方消息,DeFi借贷协议Alchemix表示,在ALCX奖励合约中发现了一个错误,即第一次与新Masterchefv2ALCX-ETH池交互的奖励计算不正确。主要问题是,随着时间的推移,新的质押者加入时会向他们支付过多的奖励,虽然在发现时错误很小,但随着时间的推移必然会增加。出于这个原因,Alchemix要求Sushi在实施修复时断开合约并禁用ALCX奖励。SUSHI奖励仍在累积,SLP资金安全。Alchemix将尽快公布ALCX奖励恢复时间和回溯奖励分配的详情。此前消息,SushiSwap团队成员Keno表示,DeFi借贷协议Alchemix请求SushiSwap禁用他们的双挖奖励,因为SushiSwap帮助Alchemix筛选了一个从他们的奖励合约中抽走ALCX的bug。[2021/6/4 23:11:53]
攻击者信息
分析师:本月DeFi代币平均下跌50%:数据分析师Ceteris Paribus发推文称,本月DeFi代币平均下跌了50%。有趣的是,唯一上升的是专注于layer 2的(即LRC),上升了5%。[2020/9/22]
攻击tx:0x67134b2687945404b7697873a553a8318117dc56004ddaa02d2a6ac85e502e4a
攻击合约:0x05806559f7f7732f2d3e71bca2eb12eab1938ceb
被攻击池信息
USDT池:0xc1b02e52e9512519edf99671931772e452fb4399
安全公司:警惕DeFi挖矿钓鱼授权盗币攻击:据慢雾区情报,由于DeFi挖矿项目的火热,除了仿盘以外,目前已经出现了针对以太坊DeFi挖矿的钓鱼攻击,攻击者通过新建一个挖矿项目,诱导用户授权给项目本身,其实是授权给了一个攻击者自己可控的地址,在授权完成后,用户资金会被立即转出。经慢雾安全团队分析,目前该网站诱导用户授权给地址0x59DFd93D34DFF5D36dEdD539425a7D7D2a77B3e5,该地址并为合约地址,而是一个攻击者控制的普通的个人地址。通过区块浏览器查询显示,已有20万枚USDC和52枚YAMV2被转移。慢雾安全团队提醒,用户在操作DeFi项目时,一定要对项目本身进行足够的了解,并需注意该项目是否通过安全审计,并在授权时,对授权对象进行核对,确认是项目方的地址,避免资金损失。[2020/9/6]
OKB池:0xd63b340F6e9CCcF0c997c83C8d036fa53B113546
OKEx CEO Jay Hao:只有1%的DeFi项目有成功的可能,勿把投机当投资:今日,OKEx CEO发布微博提醒用户警惕DeFi风险。Jay Hao表示:“最近币圈的感觉像极了17年那会儿,甚至以远超当时的速度在刷新大家的认知,无数farmer通宵达旦的进行DeFi挖矿,作为全球第一家集成 Dai 存款利率的交易平台,我很自信我们对于DeFi的认知和布局远超同行,但对于整个行业来说这仍是一场与人性博弈的挑战,毫不客气地讲,我认为只有1%的DeFi项目有成功的可能,大家切勿把投机当投资。”[2020/9/3]
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的预言机不存在该问题。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。