零时科技 | OMNI 遭到黑客攻击,损失超 1300ETH
2022-07-2217:30
零时科技
2022-07-22 17:30
零时科技
2022-07-22 17:30
收藏文章
订阅专栏



0x1 事件背景

OMNI 是一个用于创建和交易自定义数字资产和货币的平台。

零时科技区块链安全情报平台监控到消息,北京时间 2022 年 7 月 10 日,OMNI 遭到黑客攻击,损失超 1300ETH, 随后 OMNI 发布公告称 OMNI 仍处于测试阶段(测试版),没有客户资金损失,只有内部测试资金受到影响!零时科技安全团队及时对此安全事件进行分析。



0x2 攻击信息

  • 攻击钱包地址:

0x00000000c251faf2de8217ab64accd0070b97e47

0x627a22FF70Cb84e74c9C70E2d5B0B75af5A1Dcb9

  • 攻击合约地址:

0x3c10e78343c475b99d20fa544dd30b43c0cba26f

0x1C244c94090390f885d472b83dF267f083C72Faf         

  • 攻击交易:

0x264e16f4862d182a6a0b74977df28a85747b6f237b5e229c9a5bbacdf499ccb4

  • Pool 合约:

0x50c7a557d408a5f5a7fdbe1091831728ae7eba45



0x3 攻击步骤

1)攻击者从 Balancer 闪电贷 1000 WETH 至

0x3c10e78343c475b99d20fa544dd30b43c0cba26

2)攻击者利用 flashloan 函数借出 20 Doodles ,并通过 sushiswap 使用 13.203802230912588834 WETH 兑换 1 Doodles

3)调用 supplyERC721 方法质押三个 NFT,并借出 12.15 WETH

4)取出其中两个 NFT

5)将借出的 12.15 WTH 还回,并调用清算方法对剩余一个 NFT 进行清算

6)在清算过程中通过调用 ERC721_checkOnERC721Received 函数进行重入攻击,继续将 20 doodles 进行质押,并借出 81 WETH

7)取出 20 NFT,由于清算函数中返回值将状态设置为 false,因此在取出函数中对于借贷状态判断错误,20NFT 可以成功取出

8)由于在进行清算时,先将 NFT 取出,之后将还回的钱扣除,攻击者通过取出 NFT 时进行重入,重入后继续进行判断,此时状态已经改变,之前借出的 12.15 WETH 也不需要归还,所以攻击者最终将得到 93.15 WETH

9)将通过调用 flashloan 获得的 20 Doodles 归还,将闪电贷得到的 1000 WETH 归还



0x4 漏洞核心

攻击者通过调用 LiquidationLogic.sol 中清算方法 executeERC721LiquidationCall 进行清算

在调用_burnCollateralNTokens 方法时,burn 函数会调用 ERC721 中_checkOnERC721Received 方法

此时 to 地址为攻击合约地址,攻击者在此处实现重入攻击。继续质押 20 Doodles 进行借款

ID 状态标记为 true,之后继续执行清算函数时,清算函数会将此处的 true 覆盖为 false。之后执行取出质押操作,isBorrowAny()判断 ID 状态,此时为 false,成功取出质押的 Doodles。



0x5 资金流向

两个攻击钱包地址已分别将获取的 800 ETH 和 426.5 ETH 资金转入 Tornado.Cash


总结建议

通过此次攻击来看,该次攻击核心主要为项目方合约访问控制缺陷,未对 Pool 合约中质押做重入限制,使得攻击者恶意调用 ERC721 中_checkOnERC721Received 函数进行重入攻击,以及在 setBorrowing()方法之前没有设置状态判断操作。

安全建议

  • 建议对合约方法传参进行严格访问控制

  • 建议状态判断在转账之前

  • 建议项目方上线前进行多次审计,避免出现审计步骤缺失




出品 零时科技安全团队

往期内容回顾


区块链安全 100 问 | 第一篇:区块链安全是什么

【喜报】零时科技参与编制的《区块链关键服务安全技术要求》标准成功发布

零时科技 | Fortress 攻击事件分析

Beanstalk Farms 攻击事件分析 | 零时科技

为什么黑客如此“钟爱”跨链桥

零时科技 | Agave Finance 攻击事件分析

Hundred Finance 攻击事件分析 | 零时科技

零时科技 | 被盗 6.1 亿美金,Poly Network 被攻击复盘分析

喜讯|零时科技完成天使轮 800 万元融资,持续深化区块链生态安全布局

Popsicle 攻击事件复盘分析 | 零时科技

黑客大揭秘!扫码转账即可控制你的数字钱包

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code