移花接木:Revest Finance 被黑分析_NBS:BSPT币

By:九九@慢雾安全团队

2022 年 03 月 27 日,据慢雾区消息,Revest Finance 的 Revest 合约遭到黑客攻击,黑客盗取了近 770 万枚 ECO、579 枚 LYXe、近 7.15 亿枚 BLOCKS 以及超 35 万枚 RENA。慢雾安全团队第一时间介入分析,并将结果分享如下:

相关信息

Revest Finance 提出了一种新协议,用于将可替代的 ERC-20 代币作为不可替代的代币化金融工具进行打包、转移和存储,利用 ERC-1155 非可替代代币(NFT)标准来简化访问和商业通用性。使用该产品,资产的所有权可以以不影响资产价值的方式进行交易,从而形成一个新的商业模式。通过有针对性的用例发现该协议的机制、治理和货币化。

以下是本次攻击涉及的相关地址:

攻击者地址:

https://etherscan.io/address/0xef967ece5322c0d7d26dab41778acb55ce5bd58b

攻击合约:

https://etherscan.io/address/0xb480ac726528d1c195cd3bb32f19c92e8d928519

动态 | 福布斯:超过80%的区块链部署将是混合或多云或两者兼而有之:据新浪财经援引福布斯文章《Forrester的2020年预测》,文章指出,我们(福布斯)对区块链在2020年的三个预测:1、超过80%的区块链部署将是混合或多云或两者兼而有之;2、互操作性将成为焦点;3、公开或私人许可的区块链讨论将到达执行团队。[2019/11/25]

被攻击合约:

https://etherscan.io/address/0x2320a28f52334d62622cc2eafa15de55f9987ed9#code

攻击交易:

https://etherscan.io/tx/0xe0b0c2672b760bef4e2851e91c69c8c0ad135c6987bbf1f43f5846d89e691428

https://etherscan.io/tx/0x613b2de3bb9043884a219296eeb1ada8c47b5a0262b9c68ca06ffd2de3a5d9f5

https://etherscan.io/tx/0x0251c2b8012a61567ec5855010d29618ada066642e4a2866755d58337c2866d9

声音 | 福布斯撰稿人:Facebook会使Libra协会其他成员陷入同样的用户信任危机:据cointelegraph消息,福布斯撰稿人,IE大学数字化转型高级顾问Enrique Dans最近发表了对于Libra计划的看法,他表示,尽管Facebook声称将致力于保护用户数据安全,并且只是Libra协会100多名会员之一,不会享有特权。但Dans认为,鉴于Facebook关于用户数据的糟糕历史,没有什么能阻止该公司将此类数据货币化,Facebook推出Libra的唯一原因是为了充分利用其庞大的用户基础。而Facebook的“恶意哲学具有传染性”,最终会使Libra协会其他成员陷入同样的用户信任危机。[2019/7/11]

https://etherscan.io/tx/0x19b10c6d38f0b911fdc0e722d681a70a56699d70559eefef3d4d6fe88276c813

攻击核心点

在被攻击的 Revest 合约中,用户调用 mintAddressLock 函数来将一定数量的 ERC-20 代币存入 Revest Smart Vault 时,就会创建 FNFT。该 NFT 代表了用户拥有的代币资产数额,后续可以调用 withdrawFNFT 函数将代币赎回。

动态 | 福布斯作者预测Facebook将向其加密货币持有人支付利息:6月9日,福布斯作者Caitlin Long发文对Facebook的加密货币作了以下预测:1.Facebook的加密货币将成为发展中国家的强大力量;2.Facebook将向其加密货币持有人支付利息,这最终将导致民粹主义者呼吁废除对美国银行系统核心银行的企业补贴;3.Facebook可能会相对较快地成为全球资本市场中的巨大力量,因为它将做中央银行所做的事情;4.Facebook将面临监管不确定性;5.Facebook的监管报告计划将开启各种有趣的讨论。6.Facebook的加密货币最终将使比特币受益。[2019/6/10]

攻击核心点就在于攻击者利用 ERC1155 标准铸造 NFT 时会调用接受者地址的 onERC1155Received 函数,因此攻击者利用该点回调重入了 Revest 合约中的 depositAdditionalToFNFT 函数,该函数会铸造一个新的 NFT,接着会调用 tokenVault 合约的 handleMultipleDeposits 函数记录新的 NFT 的信息,而 handleMultipleDeposits 函数中缺少了对该新铸造的 NFT 是否存在的判断,故此攻击者利用重入修改了已经铸造过的 NFT 的信息,而用户铸造 NFT 打入 ERC20 资产代币的流程是在重入操作之前的,故此用户无需打入 ERC20 代币就成功铸造了代表自己具有 360001 枚 ERC20 代币资产的 NFT。

声音 | 福布斯:稳定币将促进传统金融采用区块链技术:福布斯发布了题为“稳定币可释放华尔街对区块链技术的采用”的文章。文章认为,稳定币的发展可能表明加密市场正在发生转变。许多人认为,这将导致传统金融的主流采用。这是因为稳定币为投资者提供了可靠的上下限,提供了与传统法定货币相关的合法性,提高了透明度,并消除了对高成本的加密货币和法币之间多次转换的需求。文章指出,目前受益于稳定币和区块链技术的一个主要市场是房地产金融。[2019/2/22]

具体细节分析

此处拿获取 RENA 代币的攻击进行分析,其他几个攻击手法一致,不做过多赘述。

1. 攻击者首先从 uniswap 池子中闪电贷借出 2 枚 RENA 代币

2. 接着调用 Revest 合约中的 mintAddressLock 函数,传入 quantities 为 2,该函数进行加锁操作后会调用 doMint 函数来铸造 NFT

动态 | 福布斯分析师Joseph Young发推质疑华尔街日报抹黑数字货币:数字货币交易所ShapeShift首席执行官Erik Voorhees在推特上评论了华尔街日报报道犯罪分子通过数字货币交易所进行近9000万美元的活动的文章,称其具有暗示性和误导性,文中引用的数据违背事实。他还指出,全球总量的2%-5%是通过银行完成的。福布斯分析师Joseph Young转发Erik Voorhees的推特,并评论,丹麦一家银行的金额为2300亿,远超于数字货币,华尔街日报的文章根本不是在说,而是暗示数字货币是犯罪分子的货币。?[2018/9/29]

在 doMint 函数中,会调用 tokenVault 合约的 createFNFT 函数记录所铸造的 NFT 函数信息,接着用户给 tokenVault 合约转账相应的 ERC20 代币,最后调用 FNFTHandler 合约中的 mint 函数来发放 NFT

所铸造的 NFT 的 fnftId 为 1027, 所记录的该 NFT 相关信息如下:

因为 depositAmount 为 0,故此 NFT 代表用户拥有的 ERC20 代币资产为 0,故无需转相关资产代币给合约

3. 再次调用 Revest 合约中的 mintAddressLock 函数,传入 quantities 为 360000,与上面相同的步骤调用 doMint 进行铸造 NFT,所铸造的 NFT 的 fnftId 为 1028,记录的 NFT 信息如下:

因为 depositAmount 为 0,故仍然无需转账代币资产给 tokenVault,但是与之前不同的是,这一次铸造 NFT 的操作中,因为在调用 FNFTHandler 合约的 mint 函数时会调用 _doSafeTransferAcceptanceCheck 函数

该函数会调用攻击合约的 onERC1155Received 函数,故此攻击者利用攻击合约中的重写的 onERC1155Received 函数回调重入了 Revest 合约的 depositAdditionalToFNFT 函数

在 depositAdditionalToFNFT 函数需要传入指定的 fnftId(此处是 1027)、NFT 数量 quantity(此处是 1)与单个 NFT 中需要存款的资产数额 amount(此处是 1),该函数会 burn 掉传入的 fnftId 的指定数量的 NFT,接着用户转入指定数量的 ERC20 代币资产并 mint 新的 NFT,需要转账的数量是 quantity *? amount 为 1,最后调用 tokenVault 合约中的 handleMultipleDeposits?记录新的 NFT 的存款数量为上面传入指定 fnftId 的 NFT 的 depositAmount 值 + 传入的 amount 的值

而在 handleMultipleDeposits 函数 mint 新的 NFT 时没有判断该 NFT 的信息是否在 tokenVault 合约中存在,故此攻击者利用该问题直接修改了 1028 号 NFT 的信息,使得该 NFT 虽然在 doMint 操作时第一次记录的 depositAmount 为 0,但是在重入后却修改成了 1

4. 最后调用 withdrawFNFT 函数进行提取 NFT 中所代表的 ERC20 代币资产

该函数燃烧掉指定的 NFT 后,会调用 tokenVault 合约中的 withdrawToken 函数进行提款

因为 depositAmount 在回调后被修改了为了 1,故此最后提款的 RENA 数量计算出来约为 360000 枚

5. 攻击者归还闪电贷后获利离场

总结

本次攻击事件是由于在 tokenVault 合约中的 handleMultipleDeposits 函数中没有判断该新铸造的 NFT 是否存在,故此攻击者利用该点直接修改了已经铸造过的 NFT 的信息,并且在 Revest 合约中关键的函数没有做重入锁的限制,导致了被回调利用。慢雾安全团队建议在进行铸造 NFT 等敏感操作时需增加对 NFT 是否已经存在的判断,且在合约关键函数中必须添加重入锁的限制,避免再次出现此类问题。

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

金宝趣谈

欧易交易所app下载马斯克、Twitter和DAO_马斯克:QUOTH

Twitter 拥有着非凡的潜力,我将会释放它。马斯克或许是争议最大的“世界首富”。人们对于他的评价褒贬不一,爱他的人认为马斯克脚踏实地做技术,是个了不起的人物,讨厌他的人则认为马斯克口无遮拦,

[0:15ms0-7:359ms