北京时间2020年08月05日,DeFi期权平台Opyn的看跌期权智能合约遭到黑客攻击,损失约37万美元。
Opyn是一个通用期权协议,于今年2月份转型为保险平台,通过oTokens为DeFi平台提供可交易的ETH看跌期权,以此锚定ETH市场价格,为高波动性的DeFi市场提供相对的稳定性。
PeckShield安全团队获悉Opyn平台遭受攻击后,迅速定位到问题关键点在于:
攻击者发现?Opyn智能合约行权接口对接收到的ETH存在某些处理缺陷,其合约并没有对交易者的实时交易额进行检验,使得攻击者可以在一笔对自己发起真实的交易之后,再插入一笔伪装交易得卖方所抵押的数字资产,进而实现空手套白狼。
简单来说,由于OpynETHPut智能合约中的行权函数exercise()没有对交易者的ETH进行实时校验。根据Opyn平台的业务逻辑,看跌期权的买方给卖方转移相应价值的ETH,即可获得卖方抵押的数字资产。狡猾的攻击者,先向自己发起伪装的交易,利用这笔ETH可以重复使用的特性,再次向卖方用户发起转账,进而取卖方已经抵押的数字资产。
DeFi协议总锁仓量达547.8亿美元:金色财经报道,据DefiLlama数据显示,DeFi协议总锁仓量(TVL)达到547.8亿美元,24小时涨幅0.04%。TVL排名前五分别为MakerDAO(73.7亿美元)、Lido(60.4亿美元)、Curve(59.9亿美元)、AAVE(56.6亿美元)、Uniswap(52.3亿美元)。[2022/9/29 5:59:49]
下面为您详细分析漏洞原因及攻击过程。
漏洞详细过程分析
先来说说,Opyn平台的业务逻辑:当用户使用Opyn合约行权即买卖期货时,需要买方向卖方转入相应数量的ETH或者ERC20Token,然后合约将销毁买方对应的oToken,而后买方将获得卖方已经抵押的资产。
例如:小王认为行情进入了下跌趋势,看到Opyn上挂着一个小李对ETH330美元的看跌期权,于是进入交易系统,向小李转账一个ETH,获得小李抵押的等额数字资产。若此刻行情已经跌至了300美元,小王便可获得其中的差价。
PEAKDEFI针对俄罗斯用户进行营销,面临公众质疑:金色财经报道,西汉姆联与DeFi加密平台PEAKDEFI的新合作正因积极向俄罗斯用户推广其加密货币服务而面临质疑。足球金融专家Martin Calladine发现,西汉姆联与其加密货币合作伙伴仅使用英语和俄语为主要语言在Twitter上推广其加密服务,这引发人们对PEAKDEFI的怀疑。
据悉,西汉姆联于2022年5月与DeFi加密平台PEAKDEFI合作。总部位于迪拜的PEAKDEF成立于2020年,提供加密钱包和各种加密股权和投资基金。[2022/9/8 13:15:27]
DeFi 概念板块今日平均涨幅为3.93%:金色财经行情显示,DeFi 概念板块今日平均涨幅为3.93%。47个币种中34个上涨,13个下跌,其中领涨币种为:LRC(+38.97%)、DMG(+33.52%)、BZRX(+14.90%)。领跌币种为:TRB(-6.56%)、AMPL(-6.48%)、WICC(-4.51%)。[2021/10/29 6:18:27]
图1.exercise()?函数中循环执行传入的?vaults?地址列表
如上面的合约代码片段所示,行权函数exercise()的内部是一个循环,依据参数中传递的vaultsToExerciseFrom中的地址数量依次调用真正的行权逻辑_exercise()函数。
动态 | DeFi 应用 Instadapp 锁定资产达 2600 万美元,无第三方审计引发质疑:去中心化金融应用 Instadapp 智能合约中锁定资产超过 2600 万美元,但因一直未接受任何第三方的审计而引发推特用户质疑。Instadapp 的开发者表示,因为他们使用了 MakerDAO 代理合约的克隆版,因此不需要审计。但推特用户 Chris Blec 发推质疑称,“对于一个不懂代码的终端用户来说,是否使用了 MakerDAO 代理合约的克隆版,在没有第三方审计或信誉良好的 Solidity 开发人员的佐证下也无从得知”。针对 Chris Blec 的质疑,Instadapp 方面表示,将在大约 3 周后发布一个完整的审计报告。[2019/8/11]
图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被重复使用的风险。
作者:加密乌托邦原题:《通俗化讲解DeFi的逻辑与反逻辑》 本文结构:DeFi的分类去中心化借贷资产上链与资产下链ERC20与空气与激励.
1900/1/1 0:00:00最近,美国监管开始允许美国银行托管加密数字货币。这样的一个决策对加密数字货币和加密数字资产行业的影响是非常深远的。对于加密数字货币行业中的这个进展,我认为可以从以下几个方面理解.
1900/1/1 0:00:00作者:Tony来源:IPFS原力区导言:在符合市场经济规律、Filecoin商业落地的前提下,理论上,随着N天冻结期、M天线性释放期时间越长,Filecoin价格会相应增涨.
1900/1/1 0:00:00美国国会议员汤姆·埃默表示,比特币的去中心化是其对抗法定货币的主要王牌。他指出,类似于2008年的金融危机,冠状病大流行正在促使人们寻找其他有价值的物品.
1900/1/1 0:00:00Facebook在加密货币项目“LIBRA”的白皮书草案中写道,“本项目旨在向全世界17亿金融弱势群体提供简单快捷的金融服务”.
1900/1/1 0:00:00本文来源:律动BlockBeatsDeFi的「大食堂」中,除了红薯外,还有意大利面、冰激凌、虾、葡萄、菠萝等10食物,我们一起看看这些「瓜果蔬菜」都要怎么玩?伴随着YAMfarming的火热.
1900/1/1 0:00:00