ONE:OneRing Finance 被黑分析

By:小白@慢雾安全团队

2022 年 3 月 21 日,据慢雾区消息,OneRing Finance 存在严重漏洞遭到攻击,黑客获利约 1,454,672.244369 USDC(约 146 万美元),慢雾安全团队第一时间介入分析,并将结果分享如下:

相关信息

OneRing Finance 是一个去中心化应用程序(DApp),它支持加密货币的质押挖矿。用户可以存入代币来获取收益。

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

攻击者地址:

0x12efed3512ea7b76f79bcde4a387216c7bce905e

攻击交易:https://ftmscan.com/tx/0xca8dd33850e29cf138c8382e17a19e77d7331b57c7a8451648788bbb26a70145

攻击合约:

0x6a6d593ed7458b8213fa71f1adc4a9e5fd0b5a58

Opera推出默认启用AI服务的新浏览器Opera One抢先体验版本:4月25日消息,Web3 浏览器 Opera 推出新浏览器 Opera One 抢先体验版本,计划在今年晚些时候取代适用于 Windows、MacOS 和 Linux 的旗舰 Opera 浏览器。Opera One 中的第一个新功能是 Tab Islands,这是一种新的、更直观的与多个 Tab 交互和管理的方式。Opera One 还默认启用 AI 服务,例如包括 AI Prompts,以及在侧边栏中访问 ChatGPT 和 ChatSonic。[2023/4/25 14:25:50]

被攻击合约:

OneRingVault:0xc06826f52f29b34c5d8b2c61abf844cebcf78abf

攻击核心点

OneRing 直接使用了 Pair 中的 reserves 参与 OShare 的价格计算,攻击者利用 OneRingVault 正常的业务逻辑进行巨额的 Swap 操作产生的大滑点,使得 Pair 中的 reserves 非预期的增加,从而拉高了 OShare 的价格,导致相同数量的 OShare 可以取出更多的资金。

虎符创新区于1月7日新增DinoX(DNXC)和Harmony(ONE):据官方消息,虎符创新区于1月7日12:00(UTC)新增DinoX(DNXC),13:00(UTC)新增Harmony(ONE),开放DNXC/USDT和ONE/USDT交易,以及充提业务。

Harmony 是一条高速安全的区块链,核心技术创新包括状态分片和点对点联网。

DinoX 基于以太坊和 Polygon 网络,是具有收藏、 交易 、交互特性的恐龙NFT,同时正在创建一款融合台式机和手持设备流行类型的恐龙游戏。[2022/1/7 8:31:42]

具体细节分析

1. 攻击者构造了攻击合约,利用闪电贷从 Solidity 借出 80000000 个 USDC 到攻击合约中

2. 接着通过 swap 函数将 1 个 USDC 兑换成 miMatic 代币,这里可以看到当前代币兑换率是 1:1.001109876698508218

数据分析平台Dune Analytics与InfStones展开合作:据官方公告,区块链基础设施提供商InfStones与数据分析公司Dune Analytics达成合作,为Dune Analytics在币安智能链(BSC)上提供独家数据API服务。

Dune Analytics是最常用的区块链数据分析网站,它提供了许多预处理的数据分析仪表板,可以展示出大量评估市场的关键指标以及特定项目的仪表板。AAVE、Uniswap、Compound、Maker等知名DeFi项目均在Dune Analytics上有集成。InfStones于今年6月宣布与币安智能链合作提供链上数据服务、节点服务、API服务等基础设施服务,降低BSC生态系统内所有开发者、项目方在BSC上开发的门槛。

InfStones区块链基础设施服务商,成立于2018年,并在两个大洲、三个国家设有办公室。InfStones致力于降低区块链的访问与使用门槛,让客户更便捷地在数以百计的区块链网络上建立自己的基础设施。目前,InfStones向全球超过50家大型机构客户提供服务,包括Binance、imToken、BitGo、Circle等行业企业。通过其统一化的平台,InfStones已在超过50条公有链上支持了上万个节点。[2021/7/21 1:07:30]

动态 | Block.one将用1亿EOS打击投票垄断:据cryptoglobe报道,在最近关于EOS网络中块生产商之间勾结的指控出现之后,Block.one表示将使用超过1亿个EOS来对抗其委托证明中可能出现的投票垄断。EOS网络受共识算法保护。正是通过这种一致性算法,块生产者(BP)由EOS社区选出。该过程旨在实现民主并解决扩展问题,但任何时候都只有21个区块生产者当选,从而导致投票垄断的风险。[2018/10/7]

3. 调用 depositSafe 函数将 79,999,997($80,079,997.00)个 USDC 充值进合约

这里 depositSafe 函数会内部调用 _deposit 函数,_deposit 函数会调用 _doHardWorkAll 函数,在该函数中会使用 for 循环将部分存入的 USDC 全部兑换成其他的代币

金融盛会Money20/20即将召开 去年冠军将继续代表BTC参赛:为期五天的Money20/20比赛将于3月10日在香港举行,它是全球规模最大的支付与金融服务盛会。去年冠军、Adastra Marketing营销总监Amelie Arras表示将在今年的Money20/20亚洲赛中继续捍卫比特币,届时她将与代表黄金、现金、信用卡和移动支付的竞争对手正面交锋。比赛将设置各种各样的挑战,比如选手必须在规定时间内用所代表的支付媒介购买所要求的东西、食物,支付住宿费用等,完成任务可获得积分,到达终点时获得最高积分的选手可以获胜。Amelie Arras是一名狂热的比特币倡导者,去年她参赛的初衷便是想看看哪个支付系统和货币可以被更广泛的接受。[2018/2/26]

然后 depositSafe 将约 41,965,509.691846094312718922 个 OShare 代币 mint 给攻击者。此时我们可以看到 OShare 的价格是 1062758591235248117 这个值

从下面这张图中可以看出在 swap 后攻击者使用两个 USDC 再次兑换 miMATIC 代币时此时的兑换率已经产生巨大变化:

4. 然后调用 withdraw 函数。我们可以看到 withdraw 函数也调用了getSharePrice 函数进行 OShare 的价格计算

我们来看 getSharePrice 函数:

这里调用了 balanceWithInvested 函数,继续跟进发现调用了 investedBalanceInUSD 函数:

这里可以看到最终影响价格的是 getUSDBalanceFromUnderlyingBalance 函数

在 getUSDBalanceFromUnderlyingBalance 函数中我们可以看到,该函数使用合约中两个代币的数量? _reserves0 和 _reserves1 这两个值进行计算,由于之前的 swap 导致大量的 USDC 留在池子中,所以导致池子中的 USDC 数量变大,从而使 _amount 变大,这就导致了 getSharePrice 函数获取到的当前 OShare 的价格变大了

由下图我们可以看到当前的 OShare 的价格为 1136563707735425848 这个值:

从下面的 withdraw 函数中可以看出最终的提现数量是通过 _withdraw 进行计算得出的

跟进去后发现 _toWithdraw 也是由 balanceWithInvested 计算得出的,这也就导致这个值变大

然后会在这一步将攻击者持有的 41965509 个 OShare 兑换为 81534750101089 个 USDC

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

MistTrack

据慢雾 MistTrack 分析,攻击者将获利的部分 USDC 换成 FTM、ETH,最后将 USDC、ETH 跨链到以太坊。同时,以太坊上黑客地址初始资金来自于 Tornado.Cash 转入的 0.1 ETH,接着黑客将 521 ETH 转入 Tornado.Cash。

截止目前,黑客以太坊地址仍有近 4.5 万美元,包括 14.86 ETH 和 100.29 USDC。慢雾 MistTrack 将持续监控黑客地址。

总结

本次攻击是由于在 MasterChefBaseStrategy 合约中的 getUSDBalanceFromUnderlyingBalance 函数实时储备量进行计算导致攻击者可以利用闪电贷制造巨大差值从而获利。慢雾安全团队建议在进行 share 的价格计算时不要使用实时储备量进行计算,避免再次出现此类事故。

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

地球链

DOGEDEFI:DeFi 借贷 VS 传统借贷

随着行业的不断发展,DeFi 越来越具有与传统金融业逐鹿的竞争力。在借贷协议和去中心化交易所 (DEX) 的推动下,DeFi 中的 TVL(总价值锁定)价值 821.8亿美元(截至 2021 年.

[0:15ms0-0:878ms