前言
北京时间2022年3月22日,知道创宇区块链安全实验室?监测到Fantom生态稳定币收益优化器OneRingFinance遭到闪电贷攻击,黑客窃取逾145万美元。
分析
攻击事件如下图所示,该次攻击事件的问题点在于OneRingFinance直接使用交易对中的reserves来实时进行OShare的价格计算,攻击者通过Swap操作提高reserves的量,最终拉升OShare的价格,获取更多的资金。
基础信息
攻击合约:0x6A6d593ED7458B8213fa71F1adc4A9E5fD0B5A58
攻击者地址:0x12EfeD3512EA7b76F79BcdE4a387216C7bcE905e
攻击tx:0xca8dd33850e29cf138c8382e17a19e77d7331b57c7a8451648788bbb26a70145
Monei获得西班牙银行的批准以测试欧元支持的稳定币:金色财经报道,西班牙银行为金融科技公司Monei试点运行欧元稳定币提供支持,与欧元挂钩的数字代币 EURM 已经从西班牙银行的数字沙箱中出现,用于测试创新的新提议。EURM 通过使用以太坊和 Polygon 区块链技术创建令牌,促进欧洲范围内的欧元发送和在线支付。
在测试阶段,用户输入电话号码,通过视频识别验证身份,并通过西班牙即时支付服务 Bizum 将真实欧元装入钱包。自动创建与用户存入的真实欧元数量相同数量的 EURM,他们可以将 EURM 发送给其他注册用户。[2023/1/18 11:19:07]
漏洞合约:0xc06826f52f29b34c5d8b2c61abf844cebcf78abf
流程
攻击者的核心攻击流程如下:
攻击者从USDC/MIM交易对中闪电贷借出8000W的USDC到攻击合约中。
亿万富翁Paul Tudor Jones:遗憾没有购买更多比特币:亿万富翁、传奇基金经理Paul Tudor Jones今日发推称,我押注比特币原本是作为应对美元贬值的避风港,但它的表现令人难以置信。我唯一的遗憾是没有购买更多。我相信我们看到的这种价格上涨还远远没有结束。实际上,它才刚刚开始!今年5月份,Paul Tudor Jones接受CNBC采访表示,他认为比特币是很好的投机,其资产中有略高于1%的部分是比特币。[2020/8/18]
2.攻击者使用swap把1USDC兑换成1.001miMATIC。
3.使用depositSafe存入79999997的USDC。
4.合约mint给攻击者41965509OShare,此时攻击者还有2USDC和1.001miMATIC。
5.攻击者将2USDC和0.326miMATIC添加流动性,获得7.82x10-7spLP。
动态 | 资管公司Stone Ridge宣布新的比特币期货基金获SEC批准:资产管理公司Stone Ridge宣布新的比特币期货基金已获得美国证券交易委员会(SEC)的批准,该基金于10月提交,本周一生效。和Galaxy Digital和VanEck最近推出的基金不同,此支基金计划仅投资以现金结算的期货,以解决了有关潜在市场操纵的监管问题,并赢得了 SEC 官方 Dalia Blass 的个人认可。备案文件显示,Stone Ridge Holdings Group的子公司Stone Ridge Funds 目前客户为具有长期前景的机构客户,截至8月30日,该集团已管理了约150亿美元的资产。[2019/12/10]
6.将41965509的OSharewithdraw兑换成81534750的USDC。
7.移除流动性获取0.790USDC和0.862miMATIC。
8.把1.501miMATIC兑换成1.433USDC。
声音 | Block.one CEO BB:区块链技术将会引领社会变革和政府转型:据cryptonomist消息,Block.one CEO BB在2019年DC区块链峰会致辞,分享关于”区块链技术将如何影响政府、监管和数字商务”。区块链能促进政府在平台上的开发升级。目前政府很多设施都是外包的,例如金融系统外包给银行这样的私有机构; 如果未来管辖权和税法都被写入货币系统中,这将会摆脱很多比如第三方执行机构和传统金融机构的需求,大幅改变企业与政府的交流方式,甚至一定程度上实现自动化管理。区块链技术能在国家层面解决很多政府需要担心的安全漏洞。最近我们突然醒悟美国最大的安全问题之一竟然是Facebook,人们觉得把数据交给一个像FB一样的中心化公司不安全。而区块链技术的,代币化的项目可以使很多开源社区直接与中心化的公司竞争。[2019/3/8]
9.归还8000WUSDC和80080USDC的手续费,最净获得?1534750-80080=1454670?USDC
Millennial Money创始人格兰特·萨巴蒂尔警告:比特币只是一场,并不是投资:Millennial Money创始人格兰特·萨巴蒂尔(Grant Sabatier)曾经凭借比特币在几年内把5000美元增值到上百万美元,但他却撰文劝诫人们不要投资比特币。比特币近期的暴涨吸引了越来越多投资者的关注,而作为一名借此获得不菲收益的投资者,萨巴蒂尔却认为这只是一场,并不是投资。
他认为很难对比特币进行估值,这种加密货币甚至有可能没有任何价值。由于最近有很多完全不懂区块链的人也买入比特币,导致比特币的波动进一步加大,甚至影响了它原本的买卖功能。更何况,比特币并不像很多人想象得那么安全,盗窃事件时有发生,而且一旦丢失,几乎无法找回。
如果执意想要投资这种加密货币,萨巴蒂尔也建议用自己净资产的1%参与,而且要认清其投机的本质,千万不要把它当成投资。[2017/12/18]
细节
攻击者在攻击之前通过CelerNetwork的cBridge跨链获得了发起攻击所需的gas。
通过流程第二步我们可以看出当时USDC和miMATIC的兑换率为约1:1.001,而通过流程第三步和第四步的?swap?后可以在第五步中看到USDC和miMATIC的兑换率变成了约1:0.163,所以我们需要重点分析?deposit?函数和?withdraw?中计算价格的问题。
分析交易的Debugger,可以看到调用的是?depositSafe?函数。
查看?depositSafe?函数,其内部会调用?_deposit?函数,继续跟进,发现在?_deposit?函数中又调用了?_doHardWorkAll?函数,最后?mint?OShare给攻击者。
而在?_doHardWorkAll?函数中使用了for循环将部分存入的USDC全部兑换成其他的代币。
执行此次?depositSafe?函数时?getSharePrice?计算的OShare价格为?1062758591235248117。
接下来我们看下?getSharePrice?函数的代码,在?getSharePrice?函数中调用了?balanceWithInvested?函数,而在?balanceWithInvested?函数中又调用了?investedBalanceInUSD?函数。
继续跟进,investedBalanceInUSD?函数是在合约?MasterChefBaseStrategy?中,其合约地址为:https://ftmscan.com/address/0xdbc07e219ba0cb5fddcd0fa0c5cc1eddfb77e082#code
investedBalanceInUSD?函数返回的是?getUSDBalanceFromUnderlyingBalance?函数,在?getUSDBalanceFromUnderlyingBalance?函数中可以发现合约使用两个代币的数量进行计算,而前面攻击者由于闪电贷存入了大量的USDC,从而使得最终的?_amount?的值也变大了。再次回到?getSharePrice?函数中就可以发现,_sharePrice?也会相应变大。
流程第六步使用了?withdraw?函数。
在?withdraw?函数中我们发现同样调用了?getSharePrice?计算OShare价格,在该阶段为?1136563707735425848,OShare的价格的确变大了,而最终的取款数量是通过内部调用?_withdraw?函数计算得到的。
_withdraw?函数中最终取款的值为?_realWithdraw,而?_realWithdraw=_toWithdraw.mul(uint256(10)**uint256(ERC20(_underlying).decimals())).div(uint256(10)**uint256(decimals()));,所以我们再看到?_toWithdraw,发现其值同样是由?balanceWithInvested?计算得到的,所以这就会导致最终将OShare兑换成USDC变多。
总结一下:
USDC↑->_amount↑->getUSDBalanceFromUnderlyingBalance(_underlyingBal)↑->investedBalanceInUSD()↑->balanceWithInvested()↑->_sharePrice↑
USDC↑->_amount↑->getUSDBalanceFromUnderlyingBalance(_underlyingBal)↑->investedBalanceInUSD()↑->balanceWithInvested()↑->_toWithdraw()↑->_realWithdraw()↑
后续处理
针对此次攻击,OneRingFinance团队采取了四种补救措施,包括暂停保险库,分析、调试、修复漏洞,通过财政库还款,以及提供漏洞赏金。
保险库状态:保险库已暂停,OneRingFinance团队正在努力重新设置。
分析、调试、修复:OneRingFinance团队已工作了很多小时,来修复允许黑客执行这次攻击的问题,团队已与许多合格开发者、协议合作,以查漏协议中所有的代码,协议有漏洞是完全出乎意料的,甚至对一些高级开发人员来说也是如此,因为他们以前审查过OneRingFinance的代码。
通过协议财政部还款:该团队正在制定一项计划,为受影响的人提供具体的中长期还款计划。
赏金:团队将提供被盗资金的15%以及100万RING代币,作为黑客返还资金的赏金。
总结
该次攻击事件是由于项目使用实时储备量来计算价格导致攻击者通过闪电贷借出大量USDC并存入使得储备量增大拉升OShare价格造成差值从而获利。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。