首發| Fortress Loans「被薅羊毛」298萬美元攻擊事件分析

北京時間2022年5月9日凌晨4:34:42,CertiK安全技術團隊監測到Fortress Loans遭到攻擊。北京時間5月9日上午10:05,JetFuel Finance也正式確認了關於預言機操縱的消息,並發布了可疑地址和交易的鏈接:

圖片

目前該項目損失約1,048.1 ETH和400,000 DAI(總價值約298萬美元)。攻擊者通過DAO和預言機操縱來盜取資產以完成本次攻擊,並通過Tornado Cash將被盜資產轉出。漏洞交易

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

相關地址攻擊者地址:https://bscscan.com/address/0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad攻擊者合約(已自毀):https://bscscan.com/address/0xcd337b920678cf35143322ab31ab8977c3463a45被攻擊的預言機相關合約:https://bscscan.com/address/0xc11b687cd6061a6516e23769e4657b6efa25d

攻擊步驟

① 攻擊者從Tornado Cash收到ETH,並用收到的部分ETH購買FTS代幣用於投票和抵押。

②然後,攻擊者提交了一個提案(提案編號11),改變貸款合約中FTS代幣的抵押係數。

③攻擊者使用購買的FTS代幣對其提案投了贊成票。因為Fortressloans的治理合同的法定票數是400,000 FTS——小於攻擊者持有的金額,所以該提案被通過。

圖片

④同時,攻擊者將FTS存入貸款合約作為抵押品。

⑤提案通過後,攻擊者執行提案,將FTS的抵押係數從0更新到70000000000000,以便在後續步驟中利用其獲利。

⑥此外,攻擊者通過預言機相關chain合約中的非限制性函數`submit()`更新了貸款合約使用的價格預言機,該函數缺少對簽名的有效驗證,因此該更新會被成功執行。

圖片

⑦通過更新,攻擊者的抵押品(FTS)的價值被大幅提高,所以攻擊者能夠從貸款合約中藉到大量的其他代幣。

⑧攻擊者將藉來的代幣轉換為ETH和DAI,並將其存入Tornado Cash。

合約漏洞分析

漏洞①

第一個漏洞是治理合約的一個設計缺陷。

治理合約可以執行成功提案,以修改借貸相關的配置(即增加一個抵押品和其相應的抵押品係數)。然而,要成功執行提案,投票所需的最低FTS代幣是40萬。由於FTS代幣的價格很低,攻擊者僅用大約11個ETH就交換了超過40萬個FTS代幣。

有了這些FTS代幣,攻擊者可以隨意創建一個惡意提案並成功執行。

漏洞②

第二個漏洞是chain合約用以更新價格的“submit”係數有一個缺陷——允許任何人更新價格。

圖片

L142中的必要語句被註釋掉了。因此該合約在更新價格時並未驗證該調用已收集到足夠的簽名。

資產去向

78萬+228萬USDT在兩次攻擊交易後被轉移到攻擊者地址。

230萬USDT被發送到Ethereum to anySwap(Multichain)。

77萬USDT通過cBridge(Celer Network)發送到以太坊。

所有的USDT通過Unswap兌換成ETH和DAI,並發送至Tornado Cash。

時間線

北京時間5月9日凌晨00:30左右,Fortress(FTS)的代幣價格暴跌。很快項目團隊即在telegram中說明:項目出了一些問題,目前正在調查中。

但這次攻擊可能開始得比我們想像中更早。

攻擊者第一次開始「試探」是在北京時間4月20日凌晨1:41:59,他們部署了一個未驗證的合約。在 “踩點”之後接下來的幾周里,攻擊者持續通過一系列的交易與Fortress進行交互,並部署未經驗證的合約,這一行為直到此次攻擊事件的前幾天才消停。

攻擊者部署了合約後,他們又啟動了一系列的交易——允許他們創建和資助一個外部擁有的地址,向Fortress Governor Alpha合約提出惡意提案並自己進行投票,隨後將FTS代幣的抵押品設置得極高,使得FTS價值增加,用其借取大量其他代幣,然後換成ETH和DAI。

攻擊合約在完成攻擊後已自毀,目前資金在通過cBridge(Celer Network)橋和Multichain交換橋後被轉移到以太坊鏈,並在一系列後續交易中被發送到Tornado Cash。

寫在最後本次攻擊事件本應通過安全審計來有效地避免。

針對漏洞①,由於治理代幣的價格和有多少代幣在流通是未知的,因此發現這個風險並不容易,但可以通過一定的風險發現來警告潛在的相關攻擊行為。

針對漏洞②,審計可以發現關鍵驗證的缺失,避免任何人都有可能通過提交功能來操縱價格。

Total
0
Shares
Related Posts