慢雾:Fortress Protocol 被黑分析

admin 2022年5月16日19:32:48评论24 views字数 2226阅读7分25秒阅读模式

By:Dig2@慢雾安全团队


慢雾:Fortress Protocol 被黑分析


5 月 9 日上午,由于恶意攻击,Fortress Protocol 中的资金被盗。 Fortress Protocol 遭受攻击本原因在于治理合约存在设计缺陷及 Umbrella Network 预言机存在任意操纵漏洞。具体分析如下:


相关信息


Fortress Protocol 是 BSC 上的一个 DeFi 借贷协议。以下是本次攻击涉及的相关地址:


攻击者地址:

https://bscscan.com/address/0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad


最终攻击获利交易 Hash:

https://bscscan.com/tx/0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf


FTS 代币合约地址:

https://bscscan.com/address/0x4437743ac02957068995c48e08465e0ee1769fbe


具体细节分析


早在正式攻击的 19 天前,攻击者就已经开始做准备。


4 月 29 日,攻击者在 ETH 上通过 TornadoCash 获取了 20 ETH,并将其中的 12.4 ETH 通过 cBridge 跨链到 BSC 上。


FTS 代币是 Fortress Protocol 的治理代币,发行于 21 年 4 月,总供应量为 10,000,000。


由于 FTS 价格较低,攻击者仅花费约 11.4 ETH 购买约 400,000 个 FTS 代币,占总量的 4%。


5 月 4 日,攻击者创建恶意提案合约:

https://bscscan.com/address/0x0dB3B68c482b04c49cD64728AD5D6d9a7B8E43e6


然后它被加入提案队列,是 11 号提案。


提案有三天投票期,在 5 月 7 日投票结束前的几个小时,攻击者用之前购买的约 400,000 个 FTS 给该提案投赞成票:

0xc368afb2afc499e7ebb575ba3e717497385ef962b1f1922561bcb13f85336252;

0x83a4f8f52b8f9e6ff1dd76546a772475824d9aa5b953808dbc34d1f39250f29d。


如下图,治理合约中要求,只要赞成数大于反对数,并且赞成票数大于等于 FTS 总量的 4%,也就是 400,000 个 FTS,提案即可通过。


慢雾:Fortress Protocol 被黑分析


投票结束后,提案为通过状态,还有两天的执行等待期。


两天后,也就是 5 月 9 日,用户创建攻击合约,并开始正式攻击。


在攻击合约中,首先执行了恶意提案:修改 FTS 代币的抵押率,从 0 修改至 0.7。于是攻击者可以用抵押的 FTS 70% 的价值借出协议中的资产。


Fortress Protocol 获取抵押物价格合约:

https://bscscan.com/address/0x00fcF33BFa9e3fF791b2b819Ab2446861a318285


如下图,通过不同的预言机获取各个代币的价格:


慢雾:Fortress Protocol 被黑分析


其中,FTS 代币的价格是从 Umbrella 预言机获取的:

https://bscscan.com/address/0xc11B687cd6061A6516E23769E4657b6EfA25d78E


如下图,Umbrella 预言机的 submit 多签喂价函数存在漏洞:


慢雾:Fortress Protocol 被黑分析


只需要满足签名数量大于 requiredSignatures 即可,没有验证签名者是否拥有喂价权限,因此攻击者可以用任意账号生成签名来进行喂价。


攻击发生后,Umbrella Network 及时修复漏洞并更新了合约:

https://bscscan.com/address/0x49D0D57cf6697b6a44050872CDb760945B710Aab


新的 submit 函数验证了签名者权限:


慢雾:Fortress Protocol 被黑分析


回到攻击本身,攻击者操纵预言机,将 FTS 设置了极高的价格,因此能借出协议中全部的 BNB, USDC, USDT, BUSD, BTCB, ETH, LTC, XRP, ADA, DAI, DOT, SHIB 等代币。


最终将它们换成三百余万 USDT 并通过 Anyswap 和 cBridge 跨链到以太坊,接着在以太坊上将 USDT 转换成 ETH 和 DAI 并转入了 TornadoCash。


总结


本次攻击同时利用了治理协议的缺陷和预言机币价操纵的漏洞。在治理合约开发时,需要考虑如何设计代币投票模式逻辑,使得作恶的巨鲸难以损害社区利益。同时,除了接入去中心化预言机以外,还要注意外部预言机与协议自身的兼容性。


往期回顾

慢雾出品 | MistTrack 反洗钱追踪系统

链上追踪:洗币手法科普之波场 TRON

慢雾:Rikkei Finance 被黑复现分析

慢雾:揭露浏览器恶意书签如何盗取你的 Discord Token

慢雾出品 | 余弦:区块链黑暗森林自救手册

慢雾:Fortress Protocol 被黑分析

慢雾导航


慢雾科技官网

https://www.slowmist.com/


慢雾区官网

https://slowmist.io/


慢雾 GitHub

https://github.com/slowmist


Telegram

https://t.me/slowmistteam


Twitter

https://twitter.com/@slowmist_team


Medium

https://medium.com/@slowmist


知识星球

https://t.zsxq.com/Q3zNvvF


原文始发于微信公众号(慢雾科技):慢雾:Fortress Protocol 被黑分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月16日19:32:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   慢雾:Fortress Protocol 被黑分析https://cn-sec.com/archives/1011112.html

发表评论

匿名网友 填写信息