削減事件——價格操縱

本文為機器翻譯
展示原文

幣安智能鏈上的去中心化金融(DeFi)項目 Caterpillar Coin 於 2024 年 9 月 10 日遭到攻擊,估計損失約 140 萬美元。

攻擊者通過三筆交易對該項目實施了攻擊:

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

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

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

概述

在我們的分析中,我們將重點關注造成最大損失的攻擊——第三次攻擊:

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

攻擊者:

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

脆弱合約:

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

漏洞分析

此次攻擊似乎遵循了一個簡單的模式:攻擊者利用閃電貸從 USDT-WBNB 對中借入USDT ,然後循環創建多個合約,主要攻擊邏輯在構造函數中運行。在創建每個合約之前,攻擊者都會轉移大量USDT以供構造函數中的邏輯使用。

讓我們深入研究構造函數內的邏輯。

在合約創建之前,將USDT發送給合約,新合約會將其中的一部分兌換成 CUT 代幣。

然後,合約利用獲得的 CUT 代幣和USDT為配對合約增加流動性。作為提供流動性的回報,合約將獲得相應數量的 CAKE-LP 代幣,代表其在流動性池中的份額。

在後續步驟中,合約將使用剩餘的 CUT 代幣(我們知道數量很大)執行另一次交換,這次將 CUT 代幣轉換回USDT。

然後,攻擊者銷燬 CAKE-LP 代幣。此操作會從池中移除他們提供的流動性,使他們能夠提取其相應的基礎資產份額。

深入到這一步,

觀察發現, 0x34be合約的 CUT 餘額在銷燬之前為零,但在銷燬之後卻收到了 269,661 個 CUT 代幣,而 PAIR 合約僅轉移了 60,652 個代幣,這強烈表明銷燬機制中存在異常或漏洞。

通過明顯利用銷燬過程漏洞獲得大量 CUT 代幣,攻擊者能夠執行進一步的交換,將這些 CUT 代幣轉換回USDT。這可能使他們大幅增加收益。

此外,攻擊者似乎循環執行合約創建過程,多次重複該漏洞以耗盡配對合約中大量的USDT儲備。

深入研究 CUT 代幣代碼中的addLiquidityremoveLiquidity步驟,以澄清刻錄操作中的錯誤。

對於每個新用戶增加流動性,CUT 代幣將記錄訂單 ID 以用於獎勵目的,包括增加的 CUT 金額的等值USDT價值。

並且在移除流動性的時候,CUT token 會根據_transferFunDealTypeContractAddress合約的邏輯來計算獎勵,這也就是所謂的價格保護機制。

這是一個未經驗證的代碼合約,我們將分析反編譯的源代碼。

valuePreservationByRmoveLP函數在0x70f88861函數內被反編譯。

在此函數中,合約將用戶從removeLiquidity步驟收到的 CUT 金額轉換為基於當前 CUT 價格的相應USDT值。然後,它計算與orderInfo中存儲的數據相比的價值變化。然後使用當前價格將此USDT價值變化轉換回一定數量的 CUT 代幣,並將這些代幣獎勵給用戶。

通過這種邏輯,攻擊者可以輕鬆操縱價格(拉高出貨),從而在同一筆交易中造成orderID中初始記錄的值與後來的 CUT 值之間的顯著差異。

根本原因

通過分析攻擊過程,我們可以看出該合約的主要缺陷在於項目方採用實時價格來計算獎勵。

經驗教訓

完全依賴實時價格進行計算可能會有風險。攻擊者可能會利用這一點操縱價格以謀取利益。為了保護項目的完整性,建議改為使用預言機價格進行計算。

相关赛道:
來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論