操纵预言机+提案攻击—Fortress Loans被黑事件分析

  • SharkTeam
  • 更新于 2022-05-12 09:48
  • 阅读 3239

2022年5月9日消息,Fortress Loans遭到黑客攻击。此次攻击事件损失了1048.1 ETH以及40万DAI。

2022年5月9日消息,Fortress Loans遭到黑客攻击。此次攻击事件损失了1048.1 ETH以及40万DAI。

image.gif

image.gif

SharkTeam第一时间对此事件进行了分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、 漏洞分析

攻击者地址:0xa6af2872176320015f8ddb2ba013b38cb35d22ad(简记为0xa6af)

攻击合约地址:0xcd337b920678cf35143322ab31ab8977c3463a45(简记为0xcd33)

被攻击合约地址:0x00fcf33bfa9e3ff791b2b819ab2446861a318285(简记为0x00fc)

从攻击合约创建开始的交易如下:

image.gif

攻击发生在5月8日,攻击过程如下:

1.攻击者创建攻击合约0xcd33,交易如下:

txHash: 0x4800928c95db2fc877f8ba3e5a41e208231dc97812b0174e75e26cca38af5039 image.gif

2.攻击者通过两笔交易向攻击合约转入100 FTS和3.02 MAHA

image.gif

image.gif

image.gif

3.发起攻击交易

image.gif

txHash:0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf

交易分析如下:

(1)攻击者合约调用Fortress治理合约执行了Id=11的提案。 image.gif

image.gif

另外,Id=11的提案的内容为设置fToken的抵押因子为700000000000000000,如下:

image.gif

(3)修改完抵押因子后,攻击合约调用了Chain合约的submit函数,修改了其中的状态变量,进一步影响到了价格预言机的价格计算。

image.gif

submit函数如下: image.gif

这里之所以能够成功修改状态变量fcds,是因为submit函数中缺少了对signer本身的校验以及power的校验。另外,价格预言机中的价格是如何被影响到的呢?我们看一下价格的获取过程,如下:

image.png

image.png

正是由于调用submit函数修改了状态变量fcds,最终修改了价格预言机中的价格。

(4)完成以上修改后,攻击者从借贷合约中借取了大量的其他Token。

image.png

4.将合约中借取的所有Token转换为USDT并从攻击合约提取到攻击者地址。

image.png

5.通过跨链协议将USDT转移到了以太坊。

image.png

6.以太坊上面,攻击者通过跨链协议提取转移的USDT。

image.png

7.攻击者将USDT兑换成ETH以及DAI。

image.png

8.攻击者将兑换的ETH和DAI存入了Tornado平台。 image.png

此外, Id=11的提案的创建、投票以及执行过程如下:

1.提案创建,时间为5月3日,交易如下:

txHash: 0x12bea43496f35e7d92fb91bf2807b1c95fcc6fedb062d66678c0b5cfe07cc002

image.png image.png

2.提案投票然后添加到执行队列,时间为5月6日。

该提案在加入到执行队列之前,接收到2次投票,然后将提案添加到队列中。

image.png

将提案添加到队列中,调用queue函数,如下:

image.png

这里,支持的票数只需要不低于400,000 FTS,投票就可以添加到执行队列中等待执行。两次投票支持的总票数为296,193 + 119,774 = 415,917 FTS > 400,000 FTS,并且eta一直为0,因此提案的状态应该为Suceeed,可以被加入到执行队列中。

此外,投票的FTS则是攻击者账户通过跨链协议Celer Network从以太坊账户中获取到的(时间为4月19日)。 image.png

进一步,以太坊上面的资金来源则是Tornado协议,时间为4月19日。 image.png

由于FTS价格低廉,攻击者实际仅仅使用9 ETH就兑换了超过400,000 FTS(实际是400,413 FTS),完成了整个攻击过程。

image.png 3.投票执行。该投票在攻击交易中执行,时间为发起攻击的时间,即5月8日。

结论:综上所述,从交易的时间上来看,此次攻击事件时一件有预谋的安全事故。本次安全安全事件发生的根本原因有两个:

1. 价格预言机计算价格的数据来源Chain合约缺少签名地址的验证以及power的验证;

2. 治理合约中,受到FTS价格影响,提案投票的最低支持票数(FTS数量)的总价值低,使得提案可以在付出较小的代价下通过并执行。

二、安全建议

针对本次事件中的安全漏洞,SharkTeam提出以下建议:

(1)对于治理合约,要谨慎设置最低投票数量,提高操纵的成本,降低提案被个人操纵的可能性。

(2)对于开发者,要思维逻辑严谨,并且要具备基本的安全性意识,在项目开发过程中, 保证代码逻辑缜密并与实际逻辑相符,尽量避免一下基本的逻辑和语言层面的安全问题。

(3)推荐项目方选择审计单位对项目进行审计后再上线,进一步提高项目的安全性,规避安全风险。

三、关于我们

SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、威胁建模、应急响应等在内的安全服务。已与区块链生态系统各个领域的关键参与者,如Huobi Global、OKX、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。

Telegram:https://t.me/sharkteamorg

Twitter:https://twitter.com/sharkteamorg

Reddit:https://www.reddit.com/r/SharkTeam

更多区块链安全咨询与分析,点击下方链接查看

D查查|链上风险核查 https://m.chainaegis.com

点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

3 条评论

请先 登录 后评论
SharkTeam
SharkTeam
0xC0f5...8888
SharkTeam是领先的Web3安全服务提供商,提供智能合约审计、链上分析和应急响应服务。 Web: https://www.sharkteam.org Telegram: https://t.me/sharkteamorg Twitter:https://twitter.com/sharkteamorg