SharkTeam:BNO攻击事件原理分析

WB3交流加微信:WX-93588,⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

北京时间2023年7月18日,Ocean BNO遭受闪电贷攻击,攻击者已获利约50万美元。

SharkTeam:BNO攻击事件原理分析

SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、 事件分析

攻击者地址:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

攻击合约:

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

被攻击合约:

0xdCA503449899d5649D32175a255A8835A03E4006

攻击交易:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

攻击流程:

(1)攻击者(0xa6566574)通过pancakeSwap闪电贷借取286449 枚BNO。

(2)随后调用被攻击合约(0xdCA50344)的stakeNft函数质押两个nft。

SharkTeam:BNO攻击事件原理分析

(3)接着调用被攻击合约(0xdCA50344)的pledge函数质押277856枚BNO币。

SharkTeam:BNO攻击事件原理分析

(4)调用被攻击合约(0xdCA50344)的emergencyWithdraw函数提取回全部的BNO

(5)然后调用被攻击合约(0xdCA50344)的unstakeNft函数,取回两个质押的nft并收到额外的BNO代币。

SharkTeam:BNO攻击事件原理分析

(6)循环上述过程,持续获得额外的BNO代币

SharkTeam:BNO攻击事件原理分析

(7)最后归还闪电贷后将所有的BNO代币换成50.5W个BUSD后获利离场。

SharkTeam:BNO攻击事件原理分析

二、漏洞分析

本次攻击的根本原因是:被攻击合约(0xdCA50344)中的奖励计算机制和紧急提取函数的交互逻辑出现问题,导致用户在提取本金后可以得到一笔额外的奖励代币。

SharkTeam:BNO攻击事件原理分析

SharkTeam:BNO攻击事件原理分析

合约提供emergencyWithdraw函数用于紧急提取代币,并清除了攻击者的allstake总抵押量和rewardDebt总债务量,但并没有清除攻击者的nftAddtion变量,而nftAddition变量也是通过allstake变量计算得到。

SharkTeam:BNO攻击事件原理分析

而在unstakeNft函数中仍然会计算出用户当前奖励,而在nftAddition变量没有被归零的情况下,pendingFit函数仍然会返回一个额外的BNO奖励值,导致攻击者获得额外的BNO代币。

SharkTeam:BNO攻击事件原理分析

三、安全建议

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:

(1)在进行奖励计算时,校验用户是否提取本金。

(2)项目上线前,需要向第三方专业的审计团队寻求技术帮助。

此时快讯

【Telegram CEO:购买了Telegram新发行的债券的四分之一并持有比特币和Toncoin】金色财经报道,Telegram创始人Pavel Durov在一份声明中表示,他个人购买了新发行的Telegram债券的四分之一,投资了数千万美元以支持Telegram的增长。这是在过去10年里他已经投入数亿美元以保持Telegram运营的基础上的额外投资。尽管Telegram的大规模增长意味着更高的存储和流量费用,但Telegram在支出方面非常高效,并且去年开始实施的盈利计划开局良好。他表示,尽管Telegram目前尚未盈利,但Telegram在绝对数字上比其竞争对手Twitter和Snap更接近盈利。 
此外,Durov还确认他拥有一些比特币和Toncoin。Durov表示,更愿意专注于他的工作,而不去拥有任何东西(除了Telegram,一些比特币和一些Toncoin)。他强调,数亿人注册Telegram是因为他们希望有一个将用户放在首位的独立消息平台,而他的责任和生活工作就是继续提供这个平台。
版权声明:本文收集于互联网,如有侵权请联系站长删除。
转载请注明:SharkTeam:BNO攻击事件原理分析 | 币百度

相关文章