事件简述
8月5日凌晨四点,有用户在opyn论坛反馈自己的账户余额无故消失,并有用户发现可疑的交易信息,如下图所示:
Opyn项目方再对情况初步分析后做出回应表示:已经转移了资金,并正在寻找问题原因
截至发稿前,官方发文回应此次事件:遭到黑客攻击,并已对可能遭受攻击的资产进行转移,但此次漏洞只涉及ETH合约,并不影响其他合约。如下图所示:
韩国科技巨头Kakao旗下区块链平台Klaytn已签署五项战略合作:1月10日消息,由韩国科技巨头Kakao开发的区块链平台Klaytn已签署五项战略合作伙伴关系,以推动公司的全球发展。自2021年8月以来,Klaytn与日本科技巨头GMO Group、亚洲NFT市场East NFT、美国娱乐公司Animal Concerts、金融科技加速器F10以及位于印度尼西亚的投资者Innovation Factory(三林集团的数字化部门)合作。
Klaytn全球采用负责人David Shin表示:已做好准备在2022年驾驭元宇宙浪潮,正在与领先的游戏公司建立更多的合作伙伴关系。(Tech in Asia)[2022/1/10 8:39:24]
Vertalo与DealBox合作将在Tezos区块链上发行证券代币:数字资产软件提供商Vertalo宣布与众筹平台DealBox合作,将在Tezos区块链上发行证券代币,本次合作将为DealBox平台22种证券进行代币化,涉及约2亿美元的交易。(CoinDesk)[2020/3/16]
成都链安-安全实验室第一时间对本次事件进行跟踪分析,以下是态势感知系统检测盗的攻击者合约地址:
0xe7870231992ab4b1a01814fa0a599115fe94203f
0xb837531bf4eb8ebfa3e20948bd14be067c18cbd3
0xb72e60ea1d0c04605f406c158dce9ac6ae6d224c
行情 | 美股开盘:美股区块链概念股仅一只下跌:美股开盘,三大股指均出现上涨,美股区块链概念股仅一只下跌。柯达下跌1.68%,埃森哲上涨0.41%,overstock.com上涨0.26%;Riot Blockchain上涨0.67%,Marathon Patent上涨1.08%,Square平盘。[2020/2/20]
攻击者攻击方式还原:
攻击者调用合约向合约发送n个USDC增加抵押,并得到合约币oETH
攻击者调用合约发送ETH进行抵押,并销毁oETH以赎回自己的USDC
攻击者赎回自己抵押的ETH。
如下图所示:
动态 | “法务部调查局”研发区块链存证技术保存司法证据:据自由时报消息,“法务部调查局”运用区块链技术,推出数字保护司法证据的办法,解决以往纸本卷证传递时间久、不易保存且难辨真伪的缺点。此外,“调查局”运用智能合约开发完成“鉴定报告上链系统”及“鉴定报告验证APP”,将鉴定数字指纹记载于以太坊区块链上。[2019/4/25]
在步骤二中,攻击者调用exercise函数,并向其传递了两个地址A、B和两倍自己应得的USDC,程序正常执行,这导致地址B的资金受损。
技术分析
以交易0x56de6c4bd906ee0c067a332e64966db8b1e866c7965c044163a503de6ee6552a为例,攻击者通过合约0xe7870231992ab4b1a01814fa0a599115fe94203f对合约0x951D51bAeFb72319d9FBE941E1615938d89ABfe2发动攻击,此笔交易中共获利$9907。如下图所示:
中国区块链企业融资次数已超美国:据报道,中国与美国在区块链融资次数方面,长期与美国存在较大差距,但中国在2017年反超。同时中国公司也争相涉足区块链,不仅有百度、京东等公司,脑白金、茅台、五粮液等也在积极与区块链建立联系。另外,据乌镇智库发表的《中国区块链产业发展白皮书》,近年中国区块链技术发明与专利数量呈爆发式增长,2016年区块链领域专利申请数量已达到205件。同花顺显示,截至3月15日,A股涉及区块链的股票已达71只,比1月底上升近20只。3月份以来,共有19只股票累计涨幅超过5%,有7只个股月内吸金共计7.14亿元。[2018/3/16]
攻击者首先调用了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,只是简单的验证了地址是否可以赎回。属于代码层的逻辑漏洞,并且根据官方回复,此合约是经过安全审计的。成都链安在此提醒各项目方:
项目上线前应当进行足够有效的安全审计,最好是多方审计
对于合约的应当设置暂停合约交易等功能,在发生安全事件时,可以以保证资金安全
安全是一个持续的过程,绝非一次审计就能保平安,与第三方安全公司建立长期的合作至关重要
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。