注意合約安全與鏈上風險

作者: Beosin

2024 年 11 月 17 日,根據 Beosin Alert 監控預警發現 FTM 鏈上借貸協議 Polter Finance 遭受攻擊,攻擊者透過閃電貸操縱項目合約中代幣價格進行獲利。 Beosin 對本次事件第一時間進行了漏洞分析和資金追蹤。

  詳細攻擊步驟:

(1) 攻擊者部署攻擊合約 (0xa21451ac32372c123191b3a4fc01deb69f91533a)

,並使用該合約在 UniswapV2 Pair (0xEc7178F4C41f346b2721907F5cF7628E388A7a58) 上執行閃電貸。攻擊者藉用了幾乎所有可用的 BOO 代幣,只留下了 1,000,000 個 BOO 代幣。

(2) 本次事件被攻擊的 LendingPool 合約 (0xd47ae558623638f676c1e38dad71b53054f54273) 使用 0x6808b5ce79d44e89883c5393b87c08b5ce79d44e89883c5393b0bbcx 3edff11e99e8e0b34cb9c3e1ff32e82a80fe)。這種餵價機制是有缺陷的,並且依賴易被操縱的 UniswapV2 Pair 的代幣儲備來進行價格計算

(3) 這個餵價合約使用可被攻擊者用於閃電貸的 uniswapV2_pair(0xEc71)合約中的代幣儲備來計算價格,因此這裡存在價格操縱攻擊漏洞

(4) 在閃電貸之後, token1_in_pair 的儲備下降到只有 100 萬 BOO 代幣,導致其計算後的價格比原來增加了 1.373 × 10¹⁸倍。這使得攻擊者可以藉出遠遠超過其抵押品價值的資產。

  原來的代幣價格
  閃電貸後錯誤的價格

(5) 攻擊者使用存款功能存入 LendingPool 1 個 BOO 代幣。由於價格被操縱,該單一 BOO 代幣的價值被放大了 1.373 × 10¹⁸倍。

(6) 攻擊者利用操縱後的代幣價格來借出大量其它資產。在呼叫 borrow 函數,攻擊者通過了合約中的價格驗證,因為該函數錯誤地驗證了被操縱的 BOO 代幣價格。

  被竊資金追蹤:

Beosin Trace 對被盜資金進行追蹤發現:被盜資金被攻擊者轉換成 FTM 代幣,然後跨鏈到 ETH 鏈,將所有資金都存放在 ETH 鏈上。以下是 ARB 鍊和 ETH 鏈上的資金流動過程示意圖。

 Beosin Trace 部分被竊資金流向圖

在經歷了一系列跨鏈代幣兌換的損耗後,存放在 ETH 鏈總額約為 776 萬 USDT。以下是存放被竊資金的地址:

11 月 20 日,攻擊者持續向 Tornado Cash 轉移了超過 2625 枚 ETH,如下圖所示。 Beosin Trace 已將駭客相關位址加入黑位址庫,後續將持續追蹤

根據 Beosin Trace 分析,被盜資金已存入 Tornado Cash

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