Back to Blog

Уязвимость публичного перевода в смарт-контракте Tether Gold

Code Auditing
27 мая 2023 г.
2 min read

5 апреля наш внутренний инструмент анализа обнаружил ошибку в контракте Tether Gold, которая позволяет злоумышленнику перевести токены XAUt (Tether Gold) любого пользователя на заранее определенный адрес. Команда получила наш отчет и сообщила, что обнаружила эту проблему самостоятельно. Сегодня мы узнали, что уязвимость была исправлена, и хотим поделиться подробностями. Кроме того, мы покажем, как использовать Phalcon Fork для разработки и отладки PoC (доказательства концепции) этой уязвимости.

0x0. Уязвимость

В функции transferFrom контракта любой желающий может вызвать эту функцию для перевода токенов других пользователей на доверенный адрес, указанный владельцем токена. Хотя эту уязвимость нельзя напрямую использовать для перевода токенов на счет злоумышленника, он все равно может передать токены из пула, чтобы манипулировать ценой токена (например, в пуле WETH-XAUt) и получить прибыль.

Исправление этой уязвимости довольно простое, как показано ниже.

0x1. Как использовать уязвимость

Для написания и отладки PoC мы можем использовать Phalcon Fork. Сначала мы создаем форк до того, как уязвимость будет исправлена. При создании форка через Fork API я использовал блок под номером 17038763.

Шаг I: подготовка достаточного количества Ether

Первый шаг — получить достаточное количество Ether для оплаты газа (gas fee) атакующему. Если на счете нет Ether, будет выполнена транзакция по переводу Ether с адреса vitalik.eth.

Шаг II: передача прав владения контрактом Tether Gold

Владельцем контракта Tether Gold является мультиподписной кошелек (0xC6CDE7C39eB2f0F0095F41570af89eFC2C1Ea828). Чтобы передать права владения атакующему, нам нужно отправить транзакцию с мультиподписью, а затем подтвердить её.

Шаг III: Добавление привилегированного аккаунта в контракт Tether Gold

Мы добавили новый аккаунт 0x189e7947a9d9210eec3a41dcf5f536bb1d7726f5 в качестве привилегированного. Затем мы вызываем функцию transferFrom, чтобы перевести токен XAUt от жертвы на этот привилегированный аккаунт.

0x2. PoC

Вы можете найти PoC на GitHub:

Sign up for the latest updates
Взлом Bitget на $387,5 млн вне блокчейна: не только ключи и контракты
Security Insights

Взлом Bitget на $387,5 млн вне блокчейна: не только ключи и контракты

24.09.2026 хакеры взломали сторонний продукт, похитили учётные данные и подделали выводы. Похищено ~$387,5 млн со счетов Bitget (Ethereum, EVM, XRP Ledger, Zcash, TRON); ключи целы. Обзор инцидента, конвертации активов, мер защиты и blockchain-пентеста.

Потеряно ~11,3 млн $: Multicall Router, Nostra | BlockSec Weekly
Security Insights

Потеряно ~11,3 млн $: Multicall Router, Nostra | BlockSec Weekly

Отчёт (14–20.09.2026): 2 инцидента, ~$11.3M потерь на Ethereum и Starknet. Мультиколл-роутер обманул Safe, выведя ~2900 aEthrsETH в пул Uniswap v4. Оракул Nostra оценил NSTR в ~$49.52, дав ~$3.5M займов под завышенный залог.

Потеряно ~320 млн $: взломы Liquid Network и Symbiosis | BlockSec
Security Insights

Потеряно ~320 млн $: взломы Liquid Network и Symbiosis | BlockSec

Отчёт за 2026/09/07–2026/09/13: два инцидента, ~$320М убытков. Эксплойт Liquid Network (кэш rangeproof без разделителей полей) дал 4000 незалогового L-BTC. На Bitcoin-маршруте Symbiosis отрицательная комиссия позволила выпустить триллионы syBTC — убыток ~9.97 BTC (~$770K).

Best Security Auditor for Web3

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

BlockSec Audit
Уязвимость публичного перевода в смарт-контракте Tether Gold