Back to Blog

テザーゴールドスマートコントラクトの公開送金脆弱性

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を使用しました。

ステップI:十分なEtherを用意する

最初のステップは、エクスプロイターのガス料金のために十分なEtherを取得することです。アカウントにEtherがない場合、vitalik.ethからEtherを送信するトランザクションが発行されます。

ステップII:Tether Goldコントラクトの所有権を移譲する

Tether Goldコントラクトのオーナーはマルチシグウォレット(0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828)です。所有権をエクスプロイターに移譲するには、マルチシグトランザクションを送信し、その後トランザクションを確認する必要があります。

ステップIII:Tether Goldコントラクトに特権アカウントを追加する

新しいアカウント0x189e7947a9d9210eec3a41dcf5f536bb1d7726f5を特権アカウントとして追加しました。その後、transferFrom関数を呼び出して、被害者から特権アカウントにXAUtトークンを転送します。

0x2. PoC

PoCは以下のGitHubで確認してください。

Best Security Auditor for Web3

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

BlockSec Audit