建議專案方在設計代幣模型時,考慮池子儲備的直接更改對代幣價格的影響。
作者:Sissice,慢霧安全團隊
背景
2024 年 3 月 14 日,據慢霧安全團隊情報,BSC 鏈上的 IT 代幣遭攻擊,攻擊者獲利約 1.52 萬美元。 慢霧安全團隊對該攻擊事件展開分析並將結果分享如下:
相關信息
攻擊者位址:
0xB495573Cd2246e7cc7D6d2B37d779463295e5ab0
攻擊合約位址:
0x9A2287E3122441F9657bB01b5f8c3cAbB3F4C6f2
攻擊交易:
0xdd2c446bbc98acb6649f949108536438c1d2bdd728955b4166d0efcde81c55aa
0x0c8e64ed42c360b5bbc1ac9cf31c3d6fd66f0f2ab014ef3df00220b3846963af
0x5e7ecbef2cab00144f427fe167c854710df1373853c43f268827b88ad845f976
0x6a951db7d919a0ac4e3085c88d341475542ba83628585eb808f6b9e5b668bb52
0xb33057f57ce451aa8cbb65508d298fe3c627509cc64a394736dace2671b6dcfa
攻擊核心
攻擊者利用 IT 代幣中的 transfer 函數會根據兌換代幣的數目來額外增發代幣給池子的特性,逐步提高池子中 IT 代幣的儲備,從而操縱價格,並不斷兌換出池子中的 BSC-USD 獲利。
交易分析
1. 攻擊者首先借入一筆閃電貸 2000 BSC-USD 至攻擊合約。
2. 接着攻击者用其中的 100 BSC-USD 在 pancake 的池子 (0xcfbb39) 中连续进行三次 transfer-swap 操作。
攻击者在 0x7265_PancakePair 中 swap 时会将指定数额的 IT 和 BSC-USD 代币转移至攻击合约 (0xcfbb39)。接着跟进 IT 代币 transfer 函数中的逻辑,当 IT 代币从 0x7265_PancakePair 中转出时,会调用 mintToPoolIfNeeded 函数向池子增发代币。
然而,铸造代币的数量是根据转移代币的数量和池子中代币的储备量来计算的,这就导致每次借款时,池子中 IT 代币的储备会提高,而 tokenUsdtRate 的值不断降低,那么 tokenMinReserveAfterBuy 的值就会不断升高,最后池子里铸造出了更多的 IT 代币,攻击者以此来操控每次兑换时代币的价格,使其可以用固定的 100 枚 BSC-USD 来套出池子中的 BSC-USD 代币。
3. 经过以上三次重复的操作,攻击者最终从池子中套出额外的 208 枚 BSC-USD,并用这些利润在 0xcaba_PancakePair 池子中兑换出大量自己创建的代币 (0x7c82a1),拉高币价。
4. 攻击者以同样的手法又重复攻击了 4 次,在所有攻击都完成后砸盘,用手中的垃圾代币 (0x7c82a1) 对倒出 BSC-USD 获利。
这种利用攻击交易中的获利拉高垃圾代币的价格,在攻击完成后砸盘再对倒回利润的手法,隐藏了攻击交易中的资金流向。并且由于垃圾代币是由攻击者创建的,其 transfer 函数并不会发出事件,在大部分的链上分析工具中查看的话,会有一种攻击者并没有获利的错觉。
總結
本次攻擊的核心在於每次 IT 代幣從池子轉移出來時,會導致池子中鑄造出更多的代幣,使得池子中代幣的價格可以被操控。 慢霧安全團隊建議專案方在設計代幣模型時,應考慮池子儲備的直接更改對代幣價格的影響,避免代幣轉移大幅影響池子平衡性的情況。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。