区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > Pol币 > 正文

ETH:DeFi平台Opyn智能合约漏洞详解:攻击者空手套白狼!_EFI

作者:

时间:

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

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

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

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

Clearpool与Qredo 合作,为机构对DeFi的安全访问提供支持:据官方消息,Clearpool与去中心化数字资产基础设施和技术提供商Qredo合作,使机构能够安全访问数字资产和DeFi。

Qredo的托管解决方案将集成到Clearpool的协议中,使机构能够在强大的基础设施上轻松安全地将资本部署到DeFi中。此外,Qredo将把机构借款人和贷款人社区带Clearpool的生态系统中。

Clearpool协议将机构借款人与DeFi生态系统直接联系起来,允许流动性提供商,无论是机构还是个人,向他们选择的机构放贷。[2022/2/3 9:28:46]

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

DeFi 概念板块今日平均跌幅为1.01%:金色财经行情显示,DeFi 概念板块今日平均跌幅为1.01%。47个币种中18个上涨,29个下跌,其中领涨币种为:FOR(+9.84%)、CRV(+9.54%)、GXC(+7.54%)。领跌币种为:BTM(-12.02%)、YFV(-10.54%)、SUSHI(-10.44%)。[2021/5/8 21:36:34]

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

漏洞详细过程分析

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

DeFi基金M&A已购入185.53枚WHITE:12月27日,DeFi基金M&A宣布其已经将20万美元用于收购185.53枚Whiteheart项目代币WHITE,这部分代币将注入流动性池,或用于对冲合约。

据今日早间报道,基于Hegic的链上对冲协议Whiteheart完成首次联合曲线公开发行(IBCO),1枚WHITE代币结算价格约为1.71 ETH(折合1077美元),目前WHITE代币已上线Uniswap。

据悉,M&A基金创建于11月9日,原本由链上期权协议Hegic的匿名创建者Molly Wintermute以及YFI创始人Andre Cronje共同参与,Hegic发展基金为此拨出300万美元。M&A投资首个项目zLOT。在11月18日,Molly使用M&A账号发布消息称,由于Andre Cronje不希望牵涉到任何代币推广中,因此现在M&A只有Molly一个人了。[2020/12/28 15:52:32]

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

JUST用户数在DeFi品类中稳居第一,在波场Dapp中位列第三:据DappRadar网站最新数据显示,波场首款DeFi平台JUST用户数在DeFi品类中稳居第一,在波场Dapp中位列第三。JUST是在波场TRON上运行的第一个DeFi项目,旨在打造基于波场TRON的稳定币借贷平台,同时也是全球领先数字交易平台、交易量曾登顶全球Top3的Poloniex LaunchBase首期上线项目。[2020/5/27]

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

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

图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被重复使用的风险。

标签:ETHDEFDEFIEFIxETH.TechDeFineNRGY Defi

Pol币热门资讯
BTC:牛回头还是牛到头?这三类数据或许透露天机_比特币

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

BTC:区块链+区域性股权市场:背景、思路与模式探索_WXBTC价格

本文来源:01区块链 作者:蒋照生 区域性股权市场沉寂许久,近期因证监会一纸函文再起波澜,引发各方关注.

NAS:如何正确认识区块链?《中国知识产权报》访谈高承实_Starship Inu

此文为《中国知识产权报》陈景秋副主编对作者的访谈1.记者:许多人都有这样的感觉,区块链先发于金融领域,但在互联网领域发挥的作用更明显,一个事实是,阿里巴巴在区块链领域的专利布局数百上千.

EFI:谷燕西:高盛很难推进区块链方面的应用_Farm Defi

最近CNBC采访了高盛新任的数字资产负责人MatthewMcDermott。显然高盛希望在数字资产领域有更快的发展,所以它任命了新的负责人,同时也在将其在此领域中人员增加一倍.

DEFI:DeFi在创新下高速生长,快速发展带来6大改良需求_pefi币在哪里可以交易

Amber?Group作为一家坚持长期价值的加密金融智能服务提供商,始终关注加密市场动态并向全球客户提供有价值的资讯和服务.

EFI:冻结期、锁仓期越长,Filecoin的价值会如何成长?_DEFI

作者:Tony 来源:IPFS原力区 导言: 在符合市场经济规律、Filecoin商业落地的前提下,理论上,随着N天冻结期、M天线性释放期时间越长,Filecoin价格会相应增涨.