PANews 10月18日消息,據Beosin EagleEye Web3安全預警與監控平台檢測顯示,PLTD項目遭受黑客攻擊,其交易池中的所有BUSD被全部兌空,攻擊者共獲利24,497枚BUSD。經過Beosin安全團隊分析,本次攻擊主要是利用了PLTD合約中的代碼漏洞,通過閃電貸攻擊將Cake-LP(0x4397c7)中的PLTD代幣餘額降為1,然後用手中的PLTD將所有的BUSD全部兌換到攻擊合約中。具體細節如下:

第一步:攻擊者通過DODO協議的閃電貸發起了2次閃電貸借貸,同借貸66.6萬BUSD,作為攻擊準備金;第二步:攻擊者將66.6萬的BUSD全部兌換為157萬的PLTD代幣,此時,攻擊者手中已經持有的大量的PLTD代幣,後續將利用這些代幣達到操控Cake-LP中的PLTD代幣餘額的目的;第三步:攻擊者查詢當前的bron值與Cake-LP的PLTD餘額,這是在做攻擊前的檢查,注意這兩個值很關鍵,關係到攻擊的成敗;第四步:攻擊者直接向Cake-LP(0x4397c7)發送了11.6萬的PLTD代幣,注意,這個數量剛剛是上一步中Cake-LP中的PLTD代幣餘額的兩倍減去1 。第五步:攻擊者使用skim將第四步多轉入的PLTD取回,由於PLTD合約的transfer函數中,如果from地址是uniswapV2Pair,那麼將會調用_tokenTransferBuy(這個函數細節不重要,不會影響_bron的值)。第六步:前面所有的操作都是為了這一步做準備。這一步,攻擊者向0x16b9a82891338f9ba80e2d6970fdda79d1eb0dae這個地址轉入1 PLTD,由於這個地址不是Cake-LP的地址,這次轉賬調用的內部函數是_tokenTransfer這個內部函數,問題代碼在第451行到456行,由於第四步中,將_bron設置為了Cake-LP的餘額減去1,並且在第五步恢復了Cake-LP的餘額,這一步直接將Cake-LP的餘額減至1(這里略去了通縮分紅型代幣的tAmount與rAmount轉換,這個轉換在本次攻擊中並不重要),然後再調用Cake-LP的sync函數,將餘額同步為reserve。第七步:攻擊者將手中的所有PLTD代幣,全部兌換為BUSD,幾乎掏空了Cake-LP的全部BUSD餘額,攻擊者獲得了69萬的BUSD。並將其中的66.6萬BUSD歸還閃電貸,剩餘為本次攻擊獲利24,497 BUSD,並全部轉入了0x083c057221e95D45655489Fb01b05C4806387C19地址,截止發文時,該資金未進行轉移。

針對本次攻擊事件,Beosin安全團隊提出以下建議:1.在合約上線之前,項目方應尋找第三方安全公司進行完整的安全審計;2.在代幣合約中,直接操作Pair的代幣餘額是非常危險的行為,建議項目方如非必要,千萬不要進行此操作。

攻擊交易:0x8385625e9d8011f4ad5d023d64dc7985f0315b6a4be37424c7212fe4c10dafe0,

攻擊者地址:0x6ded5927f2408a8d115da389b3fe538990e93c5b