复盘 | OmniX NFT 平台被黑分析

区块链安全 2年前 (2022) admin
490 0 0

By: Victory!


据慢雾安全团队情报,2022 年 7 月 10 号,OmniX NFT 平台遭受闪电贷攻击。慢雾安全团队现将简要复盘分析分享如下。


相关信息

攻击交易

0x05d65e0adddc5d9ccfe6cd65be4a7899ebcb6e5ec7a39787971bcc3d6ba73996


攻击者地址

0x627a22ff70cb84e74c9c70e2d5b0b75af5a1dcb9


攻击者部署的攻击合约地址

0x23f8770bd80effa7f09dffdc12a35b7221d5cad3

0x5992f10a5b284be845947a1ae1694f8560a89fa8

0x948d6fe8a7e9ebbb672508e7e93d58c6cfbd3d3f


攻击分析


1、攻击者先从 Balancer: Vault 闪电贷借出 1000 个 WETH,然后花费 16.505 WETH 买了一个 BeaconProxy  DOODLE 凭证。

2、接着攻击者又从 BeaconProxy 闪电贷借出 20 个 DOODLE 的凭证,之后通过 redeem 函数取出对应的 20 个 DoodleNFT,至此攻击者的准备工作完成。


复盘 | OmniX NFT 平台被黑分析


3、攻击者创建了一个合约

0x23F8770bd80EFFA7F09dFfdc12A35B7221d5cad3 把 20 个 DoodleNFT 转给新创建的合约后,由合约去调用 supplyERC721 抵押 NFT,获得质押的凭证  NToken, 随后调用 borrow 函数借出 12.15 个 WETH。


复盘 | OmniX NFT 平台被黑分析


4、攻击者调用 withdrawERC721 取走质押的 NFT。


复盘 | OmniX NFT 平台被黑分析


接着就是此次攻击的核心,由于在 executeWithdrawERC721 中需要 burn 质押凭证的 NToken


复盘 | OmniX NFT 平台被黑分析


但是 NToken  burn 使用的是带有回调特性的转账函数。


复盘 | OmniX NFT 平台被黑分析


所以在进行 burn 的过程中,攻击者利用这一特性重入了合约的  liquidationERC721 函数。


复盘 | OmniX NFT 平台被黑分析

5、随后攻击者在清算逻辑这边偿还了前面借出的 12.15 个WETH 并且拿到了对应的 NFT,此时在清算逻辑中。


复盘 | OmniX NFT 平台被黑分析


在回调中攻击者继续把所有 NFT 质押进去,并且重新借出 81 个 WETH,如果按照正常的借款逻辑合约会调用

userConfig.setBorrowing(reserve.id, true); 记录用户存在借贷状态。


但是攻击者在重入调用结束后会继续走回 executeERC721LiquidationCall 剩余的逻辑,由于在重入之前是全额还款所以可以通过

vars.userTotalDebt == vars.actualDebtToLiquidate,之后会执行

userConfig.setBorrowing(liquidationAssetReserve.id, false); 把用户的借贷状态设置为 false

复盘 | OmniX NFT 平台被黑分析


随后攻击者单独发起了一次 withdrawERC721 的操作,在提现的判断中会先检查是否有借贷的标志位再去判断负债多少,由于在之前的攻击中借贷状态已经被设置为 false,所以攻击者可以在不清理负债的情况下取出质押的 NFT。


复盘 | OmniX NFT 平台被黑分析


复盘 | OmniX NFT 平台被黑分析


6、最终,攻击者又创建了一个新的合约执行了一次相同手法的攻击,归还了闪电贷的 WETH 和 NFT 获利离场。


总结

本次事件中是由于 NToken  burn 函数是一个带有回调的函数,导致攻击者可以多次重入合约,从而导致合约的记账出现了错误。即使重入后再借款,但用户的状态标识被设置为未借款导致无需还款。慢雾安全团队建议在关键函数采用重入锁来防止重入问题。


往期回顾

慢雾招募令,加入未来的安全独角兽

引介|EVM 深入探讨 Part 2

慢雾:空白支票 eth_sign 钓鱼分析

慢雾:BNB CrossChain Bridge 被黑简析

智能合约安全审计入门篇 —— 拒绝服务

复盘 | OmniX NFT 平台被黑分析

慢雾导航


慢雾科技官网

https://www.slowmist.com/


慢雾区官网

https://slowmist.io/


慢雾 GitHub

https://github.com/slowmist


Telegram

https://t.me/slowmistteam


Twitter

https://twitter.com/@slowmist_team


Medium

https://medium.com/@slowmist


知识星球

https://t.zsxq.com/Q3zNvvF

原文始发于微信公众号(慢雾科技):复盘 | OmniX NFT 平台被黑分析

版权声明:admin 发表于 2022年10月27日 上午11:51。
转载请注明:复盘 | OmniX NFT 平台被黑分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...