freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

操纵预言机+提案攻击—Fortress Loans被黑事件分析
2022-05-12 10:00:47
所属地 海外

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

1652451480_627e68982cd18b9d707af.png!small

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.pngimage.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)推荐项目方选择审计单位对项目进行审计后再上线,进一步提高项目的安全性,规避安全风险。

# 网络安全 # 漏洞分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者