我們的內部分析工具於 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:



