Back to Blog

Tether Gold 智慧合約的公開轉移漏洞

Code Auditing
May 27, 2023
3 min read

我們的內部分析工具於 4 月 5 日在 Tether Gold 合約中發現了一個漏洞,該漏洞允許攻擊者將任何人的 XAUt (Tether Gold) 代幣轉移到預定義的地址。團隊收到我們的報告後表示,他們已在內部定位到此問題。今天我們發現該問題已修復,因此希望在此分享詳細資訊。此外,我們將說明如何使用 Phalcon Fork 來開發和調試此漏洞的 PoC。

0x0. 漏洞說明

在該合約transferFrom 函數中,任何人都可以調用此函數,將其他用戶的代幣轉移到代幣所有者定義的受信任接收地址。雖然此漏洞無法直接被利用來將代幣轉移到攻擊者的帳戶,但攻擊者仍能轉移池中的代幣,進而操縱池中(例如 WETH-XAUt 池)的代幣價格以獲取利潤。

此漏洞的修復方式很簡單,如下所示。

0x1. 如何利用該漏洞

為了編寫和調試 PoC,我們可以使用 Phalcon Fork 來達成目的。首先,我們可以在漏洞修復之前創建一個 Fork。在透過 Fork API 創建 Fork 時,我使用了區塊高度 17038763。

第一步:準備足夠的以太幣 (Ether)

第一步是為攻擊者準備足夠的以太幣以支付 Gas 費用。如果帳戶中沒有以太幣,則會發送一筆從 vitalik.eth 轉帳以太幣的交易。

第二步:轉移 Tether Gold 合約的所有權

Tether Gold 合約的所有者是一個多簽錢包 (0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828)。為了將所有權轉移給攻擊者,我們需要提交一筆多簽交易,然後確認該交易。

第三步:在 Tether Gold 合約中添加特權帳戶

我們添加了一個新帳戶 0x189e7947a9d9210eec3a41dcf5f536bb1d7726f5 作為特權帳戶。隨後,我們調用 transferFrom 函數,將受害者的 XAUt 代幣轉移到該特權帳戶。

0x2. PoC

請在以下 GitHub 鏈接中查看 PoC:

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit