PeckShield揭示Opyn智能合约漏洞:攻击者的出其不意之举

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册
北京时间2020年08月05日,DeFi期权平台Opyn的看跌期权(OpynETHPut)智能合约遭到黑客攻击,损失约37万美元。

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

PeckShield安全团队获悉Opyn平台遭受攻击后,迅速定位到问题关键点在于:攻击者发现Opyn智能合约行权(exercise)接口对接收到的ETH存在某些处理缺陷,其合约并没有对交易者的实时交易额进行检验,使得攻击者可以在一笔对自己发起真实的交易之后,再插入一笔伪装交易骗得卖方所抵押的数字资产,进而实现空手套白狼。

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

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

漏洞详细过程分析

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

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

图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(即msg.value的值)。这样,在后续的步骤中通过操作msgValue,就能准确的标记有多少ETH已经被花费,进而避免资产被重复利用。此外,我们还可以使用address(this).balance来检查合约余额来规避msg.value被重复使用的风险。

本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/zx/53714.html

上一篇 2023年08月12日
下一篇 2023年08月12日

相关推荐

  • OKX交易所如何关闭合约功能?详细步骤与注意事项

    OKX交易所如何关闭合约功能?详细步骤与注意事项 在数字资产交易中,合约交易因其杠杆特性吸引了部分用户,但有时用户可能因风险控制、策略调整或个人需求需要关闭合约功能,OKX作为全球主流的加密货币交易所,提供了关闭合约功能的操作路径,以下是具体步骤及注意事项,帮助

    2026-10-22 20:10:01
    3 0
  • 币安Web3合约邀请码在哪里?全面指南与获取方式

    币安Web3合约邀请码在哪里?全面指南与获取方式 在币安生态中,Web3合约功能(如BNB链上的代币发行、NFT铸造等)是许多开发者和项目方关注的重点,而邀请码作为激活部分高级功能的“钥匙”,其获取方式常被用户询问,本文将详细说明币安Web3合约邀请码的获取途径、使用场景及

    2026-10-21 06:10:01
    18 0
  • 欧亿合约100倍手续费,高杠杆背后的双重风险警示

    欧亿合约100倍手续费,高杠杆背后的双重风险警示 在加密货币合约交易领域,“欧亿合约100倍手续费”这一关键词,往往伴随着高风险与高回报的激烈博弈,所谓“100倍杠杆”,意味着投资者可以用100元保证金撬动10000元的交易仓位,这种机制放大了收益空间,但更将风险成倍放大—

    2026-10-20 20:10:02
    12 0
  • 欧易合约对冲,数字资产风险管理的压舱石

    欧易合约对冲,数字资产风险管理的压舱石 在加密货币市场的高波动性环境下,价格单边暴涨暴跌常让投资者面临巨大风险,欧易OKX作为全球领先的数字资产交易平台,其合约功能中的“对冲”策略,已成为投资者规避风险、实现资产稳健管理的重要工具,所谓欧易合约对冲,是指投资者

    2026-10-20 12:10:01
    17 0
  • 深度解析欧艺Web3永续合约,收益率揭秘与风险全攻略

    深度解析欧艺Web3永续合约,收益率揭秘与风险全攻略 在Web3浪潮席卷全球的今天,去中心化金融(DeFi)为全球投资者带来了前所未有的机遇,永续合约作为一种高杠杆、双向交易的衍生品工具,因其高波动性带来的巨大盈利潜力,成为了许多交易者的焦点,欧艺Web3(Ouyi Web3)作为

    2026-10-20 04:10:01
    19 0
  • 欧易合约交易数据单,深度解析与实战价值

    欧易合约交易数据单,深度解析与实战价值 在数字货币衍生品交易中,欧易(OKX)合约交易数据单作为投资者决策的核心工具,承载着市场趋势、资金流向与风险控制的关键信息,其不仅是交易行为的量化记录,更是洞察市场情绪与价格波动的“数据密码”。 欧易合约交易数据单的核心要

    2026-10-19 18:10:01
    17 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载