泰达黄金智能合约的公开转账漏洞

描述Tether Gold智能合约中的一个公开转账漏洞

泰达黄金智能合约的公开转账漏洞

我们内部的分析工具于4月5日发现Tether Gold合约中存在一个bug,该bug允许攻击者将任何人的XAUt(Tether Gold)代币转移到一个预设地址。该团队收到了我们的报告,并表示他们已经在内部定位了这个问题。今天我们发现该问题已得到修复,并在此分享细节。此外,我们还将介绍如何使用Phalcon Fork来开发和调试此漏洞的PoC。

0x0. 漏洞

合约transferFrom 函数中,任何人都可以调用此函数,将其他用户的代币转移到代币所有者定义的受信任接收地址。虽然此漏洞不能直接用来将代币转移到攻击者账户,但攻击者仍然可以将池中的代币转移,从而操纵池中的代币价格(例如WETH-XAUt池)来获利。

此漏洞的修复非常简单,如下所示。

0x1. 如何利用该漏洞

为了编写和调试PoC,我们可以为此目的使用Phalcon Fork。首先,我们可以在漏洞被修补之前创建一个Fork。我在创建Fork时使用了区块高度17038763,通过Fork API完成。

步骤I:准备足够的Ether

第一步是为攻击者获取足够的Ether作为gas费用。如果账户中没有Ether,将发出从vitalik.eth发送Ether的交易。

步骤II:转移Tether Gold合约的所有权

Tether Gold合约的所有者是一个多重签名钱包(0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828)。要将所有权转移给攻击者,我们需要提交一个多重签名交易,然后确认该交易。

步骤III:向Tether Gold合约添加特权账户

我们添加了一个新账户0x189e7947a9d9210eec3a41dcf5f536bb1d7726f5作为特权账户。然后,我们调用transferFrom函数,将XAUt代币从受害者转移到特权账户。

0x2. PoC

请在以下github链接中找到PoC:

Sign up for the latest updates