月亮链 月亮链
Ctrl+D收藏月亮链

ETH:DeFi平台Opyn智能合约漏洞详解:攻击者空手套白狼!_togetherbnb下载电脑

作者:

时间:1900/1/1 0:00:00

北京时间2020年08月05日,DeFi期权平台Opyn的看跌期权智能合约遭到黑客攻击,损失约37万美元。

Opyn是一个通用期权协议,于今年2月份转型为保险平台,通过oTokens为DeFi平台提供可交易的ETH看跌期权,以此锚定ETH市场价格,为高波动性的DeFi市场提供相对的稳定性。

PeckShield安全团队获悉Opyn平台遭受攻击后,迅速定位到问题关键点在于:

攻击者发现?Opyn智能合约行权接口对接收到的ETH存在某些处理缺陷,其合约并没有对交易者的实时交易额进行检验,使得攻击者可以在一笔对自己发起真实的交易之后,再插入一笔伪装交易得卖方所抵押的数字资产,进而实现空手套白狼。

简单来说,由于OpynETHPut智能合约中的行权函数exercise()没有对交易者的ETH进行实时校验。根据Opyn平台的业务逻辑,看跌期权的买方给卖方转移相应价值的ETH,即可获得卖方抵押的数字资产。狡猾的攻击者,先向自己发起伪装的交易,利用这笔ETH可以重复使用的特性,再次向卖方用户发起转账,进而取卖方已经抵押的数字资产。

Argo推出的DeFi基金在伦敦Aquis证券交易所上市:上市矿企Argo联合创始人建立的公开交易的去中心化金融(DeFi)基金Dispersion Holdings在伦敦的Aquis证券交易所上市,股票代码DEFI。(CoinDesk)[2021/4/30 21:13:28]

下面为您详细分析漏洞原因及攻击过程。

漏洞详细过程分析

先来说说,Opyn平台的业务逻辑:当用户使用Opyn合约行权即买卖期货时,需要买方向卖方转入相应数量的ETH或者ERC20Token,然后合约将销毁买方对应的oToken,而后买方将获得卖方已经抵押的资产。

例如:小王认为行情进入了下跌趋势,看到Opyn上挂着一个小李对ETH330美元的看跌期权,于是进入交易系统,向小李转账一个ETH,获得小李抵押的等额数字资产。若此刻行情已经跌至了300美元,小王便可获得其中的差价。

波场TRON DeFi总锁仓值(TVL)已达到88亿美金:据3月22日18:00(HKT)最新数据显示,波场TRON DeFi总锁仓值(TVL)已达到88亿美金。3月8日开启的波场TRON五币齐挖世纪挖矿成绩斐然,波场TRON DeFi总锁仓值一次又一次突破新高,表现出波场DeFi生态的强大势能。

据悉,波场TRON官方升级了总锁仓值(TVL)的算法:TRX的总冻结量等于能量和带宽之和,其中包括给超级代表投票冻结TRX获得的能量和带宽。波场 TRON 以推动互联网去中心化为己任,致力于为去中心化互联网搭建基础设施。旗下的 TRON 协议是全球最大的基于区块链的去中心化应用操作系统协议之一,为协议上的去中心化应用运行提供高吞吐,高扩展,高可靠性的底层公链支持。波场 TRON 还通过创新的可插拔智能合约平台为以太坊智能合约提供更好的兼容性。[2021/3/22 19:07:38]

火币推出《一分钟读懂DeFi》系列科普视频:据官方消息,8月24日,火币推出《一分钟读懂DeFi》系列科普视频,并与微博财经合作冠名播出,布道DeFi认知,助力行业发展《一分钟读懂DeFi》是由火币成长学院打造的业内首个系统全面讲解DeFi的系列科普动画,继推出《区块链100问》后的再续佳作。《一分钟读懂DeFi》系列动画对DeFi的发展进行系统梳理,适合想要由浅入深、全面系统了解区块链DeFi的人们轻松了解DeFi。目前视频已由火币网官方微博发布。[2020/8/24]

图1.exercise()?函数中循环执行传入的?vaults?地址列表

如上面的合约代码片段所示,行权函数exercise()的内部是一个循环,依据参数中传递的vaultsToExerciseFrom中的地址数量依次调用真正的行权逻辑_exercise()函数。

当前DeFi中锁定资产总价值达32.37亿美元:金色财经报道,据DeBank数据显示,DeFi中锁定资产总价值达32.37亿美元,Maker以6.39亿美元排在首位、Compound锁定资产总价值5.79亿美元、Synthetix锁定资产总价值为5.05亿美元。

注:总锁仓量(TVL)是衡量一个DeFi项目使用规模时最重要的指标,通过计算所有锁定在该项目智能合约中的ETH及各类ERC-20代币的总价值(美元)之和而得到。[2020/7/22]

图2.重用传入合约的ETH来获得抵押资产

函数处理ERC20Token时,和大部分的DeFi项目做法一样,使用transferFrom(),如代码1882行所示,从msg.sender转账到address(this)。

但是当函数处理的资产为ETH时,处理的方式就完全不一样了。因为在Solidity中,msg.value的意思是合约调用者在调用具有payable接口时所转给该合约的ETH数量,仅是一个量值,所以在合约代码的1879行中,检查msg.value==amtUnderlyingToPay仅能确保合约确实收到了amtUnderlyingToPay数量的ETH,并不会对msg.value的值造成任何影响。

但是正如上面讲到的在exercise()中会循环调用_exercise()函数,这导致尽管合约实际只收到一次ETH,然而在循环过程中却可以重复使用。

攻击点就在这里,由于合约少了一步对ETH实时数量的检验,使得攻击者可以先伪造一笔指向自己的交易,然后再把已经花掉的本金再次利用,和平台其他用户完成一笔正常交易。

图3.?攻击交易分析

在图3中,我们通过Bloxy浏览器显示的调用过程来展示攻击的过程。由于攻击者吃掉了很多笔订单,我们以其中一笔交易为例,向大家展示其攻击逻辑:

1、攻击者先从Uniswap购入了75oETH为进一步调用函数行权做好筹备;

2、攻击者创建了一个Vault地址,作为看空期权卖方,并且抵押24,750USDC铸造出75oETH,但并未卖出这些期权,等于自己同时买入了以330的价格卖出75ETH的权利;

3、攻击者在Opyn合约中调用了exercise(),在持有150oETH看空期权的情况下,先向自己的Vault地址转入了75个ETH,获得自己事先抵押的24,750个USDC,再重利用了这75个ETH,成功吃掉了另一个用户的24,750个USDC,进而实现非法获利。

修复建议

PeckShield安全团队建议,在Solidity中,合约可使用一个局部变量msgValue来保存所收到ETH。这样,在后续的步骤中通过操作msgValue,就能准确的标记有多少ETH已经被花费,进而避免资产被重复利用。此外,我们还可以使用address(this).balance来检查合约余额来规避msg.value被重复使用的风险。

标签:ETHDEFIDEFEFItogetherbnb下载电脑PlutusDeFiDeFireXPi Network DeFi

抹茶交易所热门资讯
EFI:读懂DeFi早期主要代币模式:费用型、治理型、再抵押担保型_比特币怎么转换成泰达币

我们处在?DeFi代币实验爆发临界点,了解下费用型、治理型、再抵押担保型这三种当前最常见的代币模式.

1900/1/1 0:00:00
数字货币:四大行内测大规模进行,央行数字货币将何时落地?_区块链

8月5日,有媒体报道称,数位国有大行人士表示:四大行正在深圳等地大规模测试数字钱包应用,为数字货币正式落地进行测试准备。消息一出,引发大量热议。数字货币,似乎正迅速被推上日程.

1900/1/1 0:00:00
比特币:牛回头还是牛到头?这三类数据或许透露天机_SPARK价格

没有无缘无故的爱,也没有无缘无故的恨,更没有无缘无故的上涨或下跌。这两天,加密货币轮动上涨,市场参与者开始相信,牛市正在酝酿中.

1900/1/1 0:00:00
USD:标准共识「JUST」评级:C | 2020-08-19_区块链工程专业学什么女生好

北京时间2020年8月19日,标准共识发布针对区块链项目「JUST」的一般投资风险评级报告。以下为报告的主要内容.

1900/1/1 0:00:00
数字货币:评论 | 从DeFi中的Compound看券商的中介功能_数字资产是未来最大的资产

作者:谷燕西在过去的几十年中,全球范围内的券商的经纪业务正在经历着非常大的变化。由于证券经纪业务的市场规模大和同质性强,因此导致了非常激烈的竞争。竞争的结果就是这个业务的利润率越来越低.

1900/1/1 0:00:00
MOV:MOV稳定金融论文在IEEE Brain会议正式发布_INS

近日,比原链研究院论文《MovER:StabilizeDecentralizedFinanceSystemwithPracticalRiskManagement》在IEEE协会BRAINS国际会.

1900/1/1 0:00:00