首页>财经 > 正文
聚焦:SharkTeam独家分析 | 重入攻击+闪电贷—NFT金融协议Omni被黑事件分析
来源: SharkTeam 发布于:2022-07-12 05:37:00

7月10日,NFT金融协议Omni因智能合约漏洞遭到黑客闪电贷攻击,耗尽了1300ETH,损失约143万美元。

近期NFT流动性市场安全问题频发。SharkTeam第一时间对此事件进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。


【资料图】

一、事件分析

攻击者创建多个攻击合约并发起了多次攻击,以其中一笔攻击交易为例:

攻击者地址:0x00000000c251faf2de8217ab64accd0070b97e47

攻击合约地址:0x3c10e78343c475b99d20fa544dd30b43c0cba26f

攻击者在创建了攻击合约后,通过攻击合约发起了攻击交易,攻击交易如下:

txHash: 0x264e16f4862d182a6a0b74977df28a85747b6f237b5e229c9a5bbacdf499ccb4

攻击者在该交易中获利148.8 ETH,攻击过程如下:

1. 首先,攻击者通过Balancer借贷平台闪电贷1000 ETH

2. 通过函数flashLoan闪电贷20个DOODLE

3. 通过SushiSwap平台使用WETH兑换了1个DOODLE

4. 赎回20个NFT,tokenId = 2574, 2595, 6851, 8522, 8883, ……

5. 抵押NFT(supplyERC721),tokenId = 5251, 4777, 3693,然后铸造nDOODLE

6. 借贷WETH(borrow),数量为12.15 ETH

7. 提取抵押的3个NFT中的2个,tokenId = 5251, 4777

(1)销毁抵押NFT时铸造的nDOODLE,然后调用safeTransferFrom函数将抵押的NFT转移到攻击合约。

safeTransferFrom函数如下:

攻击者利用onERC721Received函数发起了重入攻击。

质押的3个NFT提取了两个,还剩下一个tokenID = 3693的NFT,此时抵押仓位,攻击者在重入攻击中实现了自我清算

即支付WETH,销毁nDOODLE,提取tokenId = 3693的NFT,在转移NFT时再次发生重入。

此次重入,攻击者抵押了全部的20个NFT,然后铸造nDOODLE,以此做抵押,借贷了81 WETH。

最后,将所有的20个NFT提取出来。

那么,黑客为什么可以将重入中质押的NFT提取出来呢?

原因是在重入发生前,攻击者自我清算了所有抵押的NFT,清算完成后,将借贷设置为false。,即没有抵押和借贷。

在重入发生后,该状态一直没有改变。准确的说,重入后修改的状态并不是重入前以及提取时的状态

重入前:

重入后:

修改的userConfig的状态变量对应着不同的地址,因此最后可以将所有的NFT提取出来。

8. 重复上述步骤5 - 7,最终获利148.8 ETH。

攻击者在完成攻击后,将获得的ETH存入Tornado.Cash平台。

此外,该攻击者的账户地址最初的资金同样来自于Tornado.Cash平台。

以上分析,本次安全事件发生的根本原因是合约存在重入漏洞,而且是safeTransferFrom函数调用onERC721Received函数引起的。攻击者利用该漏洞发起了重入攻击,最终获利。

二、安全建议

引发本次安全事件的根本原因是合约存在重入漏洞。针对重入漏洞,我们提出以下建议,将有效帮助您规避重入带来的风险:

1.使用重入锁机制,如继承Openzeppelin标准库中的重入锁合约。

2. 应用check-effects-interactions模式,即先修改状态变量,然后进行外部调用

3. 发送ether使用transfer函数,尽量不使用call和send函数,transfer函数只允许消耗2300 gas,不足以使目的地址调用另一份智能合约。

此外,选择多个专业的智能合约审计团队进行审计,也是提高合约安全性的重要保障

三、关于我们

SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Huobi Global、OKC、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。

Web:https://www.sharkteam.org

Telegram:https://t.me/sharkteamorg

Twitter:https://twitter.com/sharkteamorg

Reddit:https://www.reddit.com/r/sharkteamorg

更多区块链安全咨询与分析,点击下方链接查看

D查查|链上风险核查https://m.chainaegis.com

关键词: 状态变量 根本原因 安全事件

猜你喜欢

  • 天天即时看!景区开启人从众模式,何必人挤人,买台哈趣K1在家纳凉观影不好吗!
  • 天天新消息丨兄弟MFC-J3940DW打印机评测:彩色A3 细致成像
  • b站视频怎么保存在手机本地?b站一个硬币up主能得多少钱?
  • 全球快资讯丨京东居家携全链路业务亮相深圳家具展 覆盖供应链、服务、设计三大板块
  • 西方文明的发源地在哪?西方文明的三大支柱是什么?
  • 全球今热点:自动上下水成扫地机器人功能标配,云鲸打造上门服务新标杆
  • 世界热头条丨COLMO构建全屋智能新图景,“墅智专家”让智控更高端
  • 暴雨的降水量是多少毫米?降水量是怎么计算的?
  • 世界信息:一加 Ace Pro 至高配备 16GB 超大内存,打造行业流畅新体验
  • 当前热点-未来新冠疫苗或是鼻腔喷雾甚至一张贴片?福奇希望疫苗更多创新
  • 今日关注:iPhone二季度在印度出货120万部 本地产iPhone接近100万部
  • 【焦点热闻】东方甄选户外直播画风变了:俞敏洪吃桃子 董宇辉聊诗词
  • 每日焦点!助力乡村振兴,润初妍10周年携近千名经销商走进宏村
  • 《暗黑破坏神2重制版》遭俄罗斯黑客团队破解 联网模式将不再支持MOD
  • 联动狂魔《糖豆人》携手《WWE》 将于7月28日推出限时售卖皮肤
  • 官方发布《间谍过家家》第二部分先导预告 预计将于10月开播
  • 2022年国产游戏销量排行榜公布 《暖雪》获得上半年最畅销新游
  • 《雷神4》曝光海量原始概念设计图 电影全球票房创全系列新高
  • 今天是日本西瓜姐 《炼金工房》发布官图邀请你和莱莎一起吃瓜
  • 从此网络直播间使用BGM需付费!试行付酬标准现已出炉