建議用作憑證代幣的合約位址需要填加白名單功能,以免被惡意操控。

封面:Photo by Compare Fibre on Unsplash

2023 年 8 月 18 日,據 Beosin-Eagle Eye 態勢感知平臺消息,Optimism 鏈的 DeFi 借貸協定 Exactly Protocol 遭受駭客攻擊,駭客獲利超 700 萬美元。

攻擊發生之後,Exactly Protocol 在社交媒體上表示,正在嘗試與攻擊者溝通,以歸還被盜資產,已向警方提交報告。

三天之後的 8 月 21 日,Exactly Protocol 發文表示協定現已解除,使用者可以執行所有操作,也沒有發生任何清算。 為了明確起見,駭客攻擊只影響到使用週邊合約(DebtManager)的使用者。 沒有使用該合約的使用者沒有任何損失,協定仍在正常運行。

Beosin 安全團隊第一時間對本次事件進行了分析,結果如下。

事件相關信息

攻擊交易

0x3d6367de5c191204b44b8a5cf975f257472087a9aadc59b5d744ffdef33a520e0x1526acfb7062090bd5fed1b3821d1691c87f6c4fb294f56b5b921f0edf0cfad60xe8999fb57684856d637504f1f0082b69a3f7b34dd4e7597bea376c9466813585

攻擊者位址

0x3747dbbcb5c07786a4c59883e473a2e38f571af9

攻擊合約

0x6dd61c69415c8ecab3fefd80d079435ead1a5b4d0x995a24c99ea2fd6c87421d516216d9bdc7fa72b4

被攻擊合約

0x16748cb753a68329ca2117a7647aa590317ebf41

漏洞分析

漏洞合約中的多個 Market 位址參數可被操控。  攻擊者通過傳入惡意的 Market 合約位址,成功繞過 permit 檢查,執行了惡意的 deposit 函數,竊取了使用者的抵押品 USDC 並清算用戶資產,最終實現了攻擊者的盈利目的。

攻擊流程

我們以 0x3d6367... 這筆交易為例

攻擊準備階段:

1. 攻擊者創建了多個惡意 Market 合約

攻击阶段

1. 攻击者调用漏洞合约的 leverage 函数(杠杠函数)传入伪造的 market 合约地址,由于 market 地址未校验合法性,permit 检查被绕过并将_msgSender 更改为受害者地址,这里为步骤 3 窃取受害者资产做了准备。 

2.leverage 函數會繼續調用惡意 market 合約中的 deposit 函數,進而執行攻擊者的惡意代碼

3.deposit 函數中的惡意代碼會先創建一個 V3 惡意 token/USDC 的池子,然後再重入進漏洞合約的 crossDeleverage 函數。 由於 marketIn 和 marketOut 同樣可控,導致 crossDeleverage 函數計算的 V3 池子最終為攻擊者創建的 V3 池子。

4. 此時由於_msgSender 已經修改為了受害者,crossDeleverage 函數進一步調用攻擊者創建的 V3 池子的 swap 函數用作閃電貸,並在回調函數 uniswapV3callback 中將受害者的資金轉入至 V3 池子中。

5. 攻擊者移除流動性將受害者資金從 V3 池子中竊取出來。

6. 由於受害者抵押資金被轉走,滿足清算條件,攻擊者進一步清算了受害者的頭寸而獲得了更多的收益。

資金追蹤

截止發文時,被盜資金已通過 Optimism bridge 和 Across Protoco 跨鏈至乙太坊。

總結

針對本次事件,Beosin 安全團隊建議:
建議用作憑證代幣的合約位址需要填加白名單功能,以免被惡意操控。 目前,Beosin 已對 Optimism 鏈上多個項目諸如 DIPX 等進行過安全審計,因此 Beosin 建議項目上線前,選擇專業的安全審計公司進行全面的安全審計,規避安全風險。

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 本文內容僅用於資訊分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。