区块链安全 | 用户余额无故消失?Opyn ETH Put逻辑漏洞技术分析_区块链:ISE

事件简述

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

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

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

中储股份:中储京科入选国家区块链创新应用试点名单:12月23日消息,据中储股份官微消息,近日,中储京科供应链管理有限公司入选国家区块链创新应用特色领域(“区块链+贸易金融”)试点名单。(财联社)[2021/12/23 7:58:35]

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

0xe7870231992ab4b1a01814fa0a599115fe94203f

0xb837531bf4eb8ebfa3e20948bd14be067c18cbd3

0xb72e60ea1d0c04605f406c158dce9ac6ae6d224c

沈阳市重点发展区块链等新经济业态:沈阳市围绕“五型经济”,首次推出628个场景项目,总计释放7000亿元人民币的投资与合作机会。“五型经济”,即创新型经济、服务型经济、开放型经济、总部型经济、流量型经济。在创新型经济上,沈阳市围绕发展信息技术、工业创新、未来交通、生物科技、新材料、空天科技、绿色生态、农业科技等领域共推出240个场景项目。重点发展电子信息材料、产业互联网、自动驾驶、区块链、4D打印、AI芯片、生物科技等新经济业态。(中国新闻网)[2021/8/6 1:38:36]

攻击者攻击方式还原:

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

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

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

如下图所示:

火币大学于佳宁:在各地“新基建”政策加持下,区块链将迎来新一波“落地潮”:6月10日,北京对外发布《关于加快培育壮大新业态新模式促进北京经济高质量发展的若干意见》,并围绕新基建、新场景、新消费、新开放、新服务配套出台了5个具体行动方案,其中,区块链”作为重点领域被提及24次。

?“北京作为首都,本次新基建系列政策将区块链又提到了一个新高度,明确提出要培育区块链企业,政策力度可谓前所未有。北京的政策又是各地政府政策的风向标,将对其他省市的区块链产业政策产生重大影响。”火币大学校长、权威区块链专家于佳宁博士表示,区块链技术是数字经济发展的关键引擎,在各地“新基建”政策加持下,区块链相关投资和创新资源会快速集聚,区块链将迎来新一波“落地潮”。

火币大学将于6月23日周二晚间20:30-22:00举办在线主题直播大课,详情点击原文链接。[2020/6/22]

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

技术分析

以交易0x56de6c4bd906ee0c067a332e64966db8b1e866c7965c044163a503de6ee6552a为例,攻击者通过合约0xe7870231992ab4b1a01814fa0a599115fe94203f对合约0x951D51bAeFb72319d9FBE941E1615938d89ABfe2发动攻击,此笔交易中共获利$9907。如下图所示:

声音 | 中国银行刘连舸:在区块链技术研究方面中国银行是排在第一的:11月5日消息,中国银行刘连舸表示,我们中国未来会高度重视数字经济,我们在区块链技术研究方面,中国银行是排在第一的。无论是北京市还是冬奥交给我们的任务,我们现在有一个电子钱包,数字钱包的概念,它会打破汇率的限制,只要你到中国来刷这个码就可以通用,所以银行在区块链技术是大有可能的,我们期待未来可以更好的服务实体经济。(第一财经)[2019/11/5]

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

区块链私募火爆 机构正在入场:近日,区块链项目私募的火热再次吸引了不少投资者的关注,而在今日,多位圈内大咖推出了门槛为500ETH的私募投资群,并表示入群者可以拿到市面上拿不到的私募额度。同时,郭宏才在微博表示有机构正在入场,网友认为,这是在花式割韭菜,不过也有人认为,这可能意味着大资金会进入场内。 ?[2018/1/2]

此函数中的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,只是简单的验证了地址是否可以赎回。属于代码层的逻辑漏洞,并且根据官方回复,此合约是经过安全审计的。成都链安在此提醒各项目方:

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

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

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

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

水星链

[0:0ms0-0:726ms