攻擊者5日在BNB Chain的TENDRIL流動性池中,透過單次兌換取得4,421,023.357469枚泰達幣(USDT);但計算整筆交易後,流動性池的淨流出量低於這筆兌換的輸出量。
BNBScan交易紀錄顯示,這筆交易於5日凌晨1時2分45秒(韓國時間)執行,並記錄在區塊131,653,427。交易雜湊為0xfdff4fba4327821c204af07944076ecaaee163a994398fdf4063d08712e40059。
在PancakeSwap V2的TENDRIL/泰達幣流動性池中,轉入攻擊合約的4,421,023.357469枚泰達幣,是該次兌換的輸出量,不能與整筆交易造成的池淨流出量混為一談。
同一筆交易中,流出池外的泰達幣共5,117,517.824288枚,流入池內的泰達幣則為4,561,847.285535枚,兩者相差555,670.538753枚,這才是淨流出量。
在去中心化交易所(DEX)的流動性池中,資產可能在單筆交易內多次進出。因此,單次兌換的輸出量與整筆交易的流入、流出差額,是不同的指標。
同一筆交易也記錄了借入30,641,402.469693枚泰達幣後全數償還。閃電貸是在單筆交易內完成借款與還款的方式。
BlockSec Phalcon分析指出,攻擊者使用借入的泰達幣買入TENDRIL後再賣出。該資安公司關注的是代幣賣出時30%稅費的處理順序。
根據BlockSec Phalcon的分析,賣出稅費處理期間,池內的TENDRIL餘額遭到銷毀,儲備也隨之更新。該公司表示,在賣出代幣的剩餘部分抵達流動性池前,紀錄中的儲備已降至接近0。
sync()是流動性池合約用來依代幣餘額重新記錄儲備的呼叫。資安公司的分析關鍵,在於這項呼叫先於剩餘賣出數量進入池內而執行。
ExVul表示,儲備同步後,池中記錄的TENDRIL餘額為6,678 wei。這是該資安公司根據程式碼與交易分析提出的說明。
BNBScan也記錄到,另有308,959.367543枚泰達幣轉至一個不同地址。僅憑這筆轉帳,無法判定攻擊者的最終獲利。
代幣買入成本、原有流動性部位與 gas 費等因素,都無法只從該筆交易的轉帳紀錄計算。公開搜尋未能確認TENDRIL方面的正式說明、修復措施或資金追回公告。
Comment 0