慢雾:Fortress Protocol 被黑分析

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

By:Dig2@慢雾安全团队

99.jpg

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,提案即可通过。

98.png

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

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

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

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

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

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

97.png

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

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

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

96.png

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

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

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

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

95.png

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

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

总结

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

本文首发于:https://mp.weixin.qq.com/s/Bv7RoF1zvJ1lBTVU0NTR8A

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

0 条评论

请先 登录 后评论
慢雾科技
慢雾科技
江湖只有他的大名,没有他的介绍。