首发 | Opyn ETH Put逻辑漏洞技术分析_CIS:USD

事件简述

8月5日凌晨四点,有用户在opyn论坛反馈自己的账户余额无故消失,并有用户发现可疑的交易信息,如下图所示:

Opyn项目方再对情况初步分析后做出回应表示:已经转移了资金,并正在寻找问题原因

截至发稿前,官方发文回应此次事件:遭到黑客攻击,并已对可能遭受攻击的资产进行转移,但此次漏洞只涉及ETH合约,并不影响其他合约。如下图所示:

成都链安-安全实验室第一时间对本次事件进行跟踪分析,以下是态势感知系统检测盗的攻击者合约地址:

0xe7870231992ab4b1a01814fa0a599115fe94203f

LBANK蓝贝壳于3月22日18:00首发 DORA,开放USDT交易:据官方公告,3月22日18:00,LBANK蓝贝壳首发DORA(Dora Factory),开放USDT交易,现已开放充值。

资料显示,Dora Factory 是基于波卡的 DAO 即服务基础设施,基于 Substrate 的开放、可编程的链上治理协议平台,为新一代去中心化组织和开发者提供二次方投票、曲线拍卖、Bounty 激励、跨链资产管理等可插拔的治理功能。同时,开发者可以向这个 DAO 即服务平台提交新的治理模块,并获得持续的激励。[2021/3/22 19:07:06]

0xb837531bf4eb8ebfa3e20948bd14be067c18cbd3

首发 | 区块链技术及软件安全实战基地正式成立:金色财经报道,今日,中软协区块链分会、人民大学、菏泽市局相关部门联合共建的区块链技术及软件安全实战基地正式成立。同时聘任中软协区块链分会副秘书长宋爱陆为区块链技术及软件安全实战基地特别专家。

区块链技术及软件安全实战基地主要涉及领域为:非法数字货币交易与、区块链与电信、网络、四方支付、冒用商标注册等,联合社会治理、城市安全、前沿技术领域的行业专家,进行警协合作。

据公开报道,近期菏泽市下属机关刚破获一起特大电信网络案,打掉多个涉嫌以网贷和投资“比特币”为名的团伙,抓获犯罪嫌疑人83名,扣押冻结涉案资金2700万元。[2020/7/21]

0xb72e60ea1d0c04605f406c158dce9ac6ae6d224c

首发 | 《一起来捉妖》中玩家达到22级将会接触到专属猫的玩法 ?:今日腾讯上线首款区块链游戏《一起来捉妖》,经金色财经查证,游戏中玩家达到22级将会接触到专属猫的玩法,而非此前官方对外宣称的15级。除了诱猫铃铛召唤出的0代猫以及部分通过运营活动奖励的专属猫以外,游戏中所有的猫默认都是未上链状态。未上链的猫不能出售,也无法进入市场与其他玩家配对;但是你可以使用这些猫与你的QQ/微信好友进行配对,产出新的小猫。使用道具“天书笔”可以将你的猫记录到区块链。当猫被记录到区块链以后,这些猫就可以进入市场,通过配对赚取点券,或者出售赚取点券。专属猫是否上链,并不影响它的增益效果。但只有上链后,它才能面对全服务器所有的玩家进行繁殖、交易。

?

《一起来捉妖》中的专属猫玩法,基于腾讯区块链技术,游戏中的虚拟数字资产得到有效保护。此外,基于腾讯区块链技术,猫也可以自由繁殖,并且运用区块链技术存储、永不消失。[2019/4/11]

攻击者攻击方式还原:

IMEOS首发 BM表示EOS合约具有整数溢出保护:据金色财经合作媒体IMEOS报道:近日ETH出现多个ERC20智能合约的处理溢出错误,BM在推特上发表评论:新的ETH契约Bug可能会破坏整个Token的供应,让持有者留下无价值Token.这就算为什么代码不能成为法律,随即表示EOS erc合约不容易受到这种攻击。而EOS官方群也有人表示担忧EOS是否具有整数溢出保护?BM回应:有很多C ++模板类可以封装类型并检查溢出。[2018/4/25]

1、攻击者调用合约向合约发送n个USDC增加抵押,并得到合约币oETH

2、攻击者调用合约发送ETH进行抵押,并销毁oETH以赎回自己的USDC

3、攻击者赎回自己抵押的ETH。

如下图所示:

在步骤二中,攻击者调用exercise函数,并向其传递了两个地址A、B和两倍自己应得的USDC,程序正常执行,这导致地址B的资金受损。

技术分析

以交易

0x56de6c4bd906ee0c067a332e64966db8b1e866c7965c044163a503de6ee6552a

为例,攻击者通过合约

0xe7870231992ab4b1a01814fa0a599115fe94203f对合约0x951D51bAeFb72319d9FBE941E1615938d89ABfe2

发动攻击,此笔交易中共获利$9907。如下图所示:

攻击者首先调用了addERC20CollateralOption函数,向合约中发送了9900个USDC,如下图所示:

此函数中的addERC20Collateral(msg.sender,amtCollateral);负责代理转账USDC;函数中的issueOTokens(amtToCreate,receiver);负责铸币oETH,此笔交易铸币30个oETH并发送给了攻击者,如下图所示:

在此完成后,攻击者的vault参数进行了变化。vault.oTokensIssued和vault.collateral分别更新300000000和9900000000为如下图所示:

然后攻击者开始将oETH兑换出来。

调用exercise,构造参数oTokensToExercise为60,vaultsToExerciseFrom为两个地址,其中一个是也满足条件的他人地址。如下图所示:

Exercise函数运行_exercise(vault.oTokensIssued,vaultOwner);分支,将30oETH相应比例的USDC发送给调用者,如下图所示:

我们可以注意到,在最终转账时,_exercise是将USDC转给了msg.sender,也就是攻击者。

我们回头看exercise中存在者for循环,攻击者输入的oTokensToExercise为60,所以合约再验证了第二个地址符合条件的情况下,依旧会将余额转给msg.sender,也就是攻击者。这就使得攻击者可以获得两次USDC,从而获得利润。

总结建议

此次事件攻击者利用了exercise函数的逻辑缺陷。此函数在进行最后转账前并未验证调用者是否有权限赎回此地址的USDC,只是简单的验证了地址是否可以赎回。属于代码层的逻辑漏洞,并且根据官方回复,此合约是经过安全审计的。成都链安在此提醒各项目方:

1、项目上线前应当进行足够有效的安全审计,最好是多方审计

2、对于合约的应当设置暂停合约交易等功能,在发生安全事件时,可以以保证资金安全

3、安全是一个持续的过程,绝非一次审计就能保平安,与第三方安全公司建立长期的合作至关重要

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-3:524ms