Как получить триллионы токенов бесплатно: кейс взлома Truebit
Хакер использовал баг в смарт-контракте проекта, который позволил выпустить 240 442 509 453 545 333 947 284 131 токенов TRU и заплатить за это 0 ETH
14.01.2026
381
9 мин
0
8 января 2026 года децентрализованный протокол офчейн-вычислений Truebit Protocol подвергся атаке. Использовав уязвимость в смарт-контракте, злоумышленник получил прибыль примерно 8 535 ETH (около $26,44 млн). GetBlock AML Research публикует детальный обзор инцидента.
Первопричина
Из-за отсутствия защиты от переполнения при операции сложения целых чисел, смарт-контракт Purchase протокола Truebit неправильно рассчитывал количество ETH, необходимое для выпуска (mint) токенов TRU.
В результате ошибка в вычислениях приводила к тому, что итоговая цена оказывалась равной нулю, что позволяло атакующему выпускать огромное количество токенов практически бесплатно и затем выводить ETH из резервов контракта.
Базовая информация
Truebit Protocol — это децентрализованный рынок вычислений вне блокчейна. Он предназначен для выполнения сложных вычислительных задач за пределами основной сети блокчейна, при этом корректность результатов обеспечивается экономическими стимулами.
В протоколе используется собственный токен TRU, который имеет алгоритмическую модель эластичного предложения. Его цена в реальном времени рассчитывается автоматически и зависит от:
- количества ETH, находящегося в резерве контракта;
- общего количества TRU в обращении.
Выпуск и сжигание TRU полностью управляются смарт-контрактами:
- Выпуск (Minting): пользователь вносит ETH в контракт Purchase и получает TRU по алгоритмической цене.
- Сжигание (Burning): пользователь сжигает принадлежащие ему TRU и получает ETH обратно по той же формуле.
Анализ атаки
| Адрес атакующего |
| 0x6C8EC8f14bE7C01672d31CFa5f2CEfeAB2562b50 |
| Контракт атаки |
| 0x764C64b2A09b09Acb100B80d8c505Aa6a0302EF2 |
| Атакующая транзакция |
| 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014 |
Алгоритм атаки
1. Атакующий сначала вызвал функцию getPurchasePrice контракта Purchase, чтобы узнать, сколько ETH требуется для выпуска 240 442 509 453 545 333 947 284 131 TRU.
Из-за специально подобранного значения произошел переполнение целого числа, и функция вернула цену 0 ETH.
2. Затем атакующий вызвал функцию выпуска токенов, передав указанное количество TRU. Так как рассчитанная цена была равна нулю, атакующий не заплатил ETH и успешно выпустил 240 442 509 453 545 333 947 284 131 TRU.
3. Сразу после этого атакующий вызвал функцию 0xc471b10b (функция сжигания), уничтожил все только что выпущенные TRU и получил 5 105,069 ETH из резервов контракта.
4. Далее атакующий многократно повторял цикл «выпуск → сжигание».
По мере роста общего количества TRU (S), для последующих выпусков требовалось небольшое количество ETH, однако стоимость получаемых токенов все равно значительно превышала затраты. Это создавало устойчивую возможность для арбитража. Атакующий продолжал процесс до тех пор, пока все ETH-резервы контракта не были полностью выведены.
Анализ механизма атаки
В результате анализа кода контракта Purchase была выявлена ключевая функция расчета цены. Формула выглядит следующим образом:
Цена = (100 × A² × R + 200 × A × R × S) / ((100 − T) × S²)
Где:
- A (AmountIn): количество токенов, которое пользователь хочет выпустить
- R (Reserve): текущий резерв ETH в контракте
- S (Supply): текущее общее количество токенов
- T (THETA): параметр контракта, зафиксирован на уровне 75
Причина уязвимости
Контракт был скомпилирован с использованием Solidity версии 0.6.10.
В версиях Solidity ниже 0.8.0 арифметические операции +, -, * не имеют встроенной проверки переполнения. Если результат вычислений превышает максимальное значение uint256 (2²⁵⁶ − 1), происходит «тихое» переполнение, и значение оборачивается в маленькое число, близкое к нулю.
Хотя операции умножения были защищены библиотекой SafeMath, операция сложения в числителе (v12 + v9) использовала обычный оператор + без защиты от переполнения. Именно отсутствие этой проверки и стало ключевой уязвимостью.
Последствия атаки
Подбирая параметр AmountIn, атакующий добился следующего:
- Все операции умножения проходили проверки SafeMath и не вызывали ошибок;
- Операция сложения переполнялась, из-за чего числитель превращался в очень маленькое число;
- Результат деления становился равным нулю.
В итоге атакующий смог выпускать огромные объемы токенов без оплаты ETH.
Анализ перемещения средств в сети
В результате атаки злоумышленник получил около 8 535 ETH (примерно $26,44 млн). Украденные активы сначала были переведены на три новых адреса, а затем полностью отправлены в Tornado Cash.
| Адреса, используемые хакером для вывода похищенных активов |
| 0xd841c52b68c5db133078aba039bd9eaf19b0b135 |
| 0x273589ca3713e7becf42069f9fb3f0c164ce850a |
| 0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60 |
Связь адресов хакера с Tornado Cash. Визуализация: MistTrack
История транзакций показывает, что адрес атакующего ранее уже проявлял активность:
- 20.11.2025: получил средства в сети Avalanche через Drain и перевел их в сеть BNB Chain с помощью Rhino.fi.
- 06.12.2025: в сети BNB Chain перевел полученные средства в сеть Ethereum через Rhino.fi.
- 27.12.2025: в сети Ethereum получил 4,98 ETH через RUN (предположительно из предыдущей атаки), после чего в Tornado Cash было отправлено в общей сложности 5 ETH.
Транзакции с адресом хакера до атаки на Truebit. Визуализация: MistTrack
Соответствующие адреса были отмечены как подозрительные.
Что теперь
Причиной атаки стало то, что операция сложения в числителе формулы расчета цены в контракте Purchase не была защищена от переполнения.
Поскольку контракт был скомпилирован с использованием Solidity 0.6.10, оператор + не выполнял проверку переполнения. Подобрав специальное значение для выпуска токенов, атакующий вызвал переполнение uint256, что привело к расчету цены, равной нулю. Это позволило выпускать токены практически бесплатно и извлекать прибыль за счет арбитража.
Для контрактов, использующих версии Solidity ниже 0.8.0, критически важно, чтобы все арифметические операции были защищены библиотеками проверки переполнения. Это позволяет предотвратить логические уязвимости, подобные описанной атаке.
Полезный материал?
Расследования
Блокчейн помог выявить связи между криптовалютными сборами средств, обменниками в Сирии и посредниками в нескольких странах мира. Обнаружена характерная схема, при которой одни и те же адреса использовались сразу в нескольких кампаниях по сбору пожертвований
24 июн. 2026 г.
Расследования
Четыре иранские криптовалютные биржи обеспечивали около 78% всего объема цифровых активов, связанных со страной в 2025 году. Теперь они оказались в центре крупнейшей санкционной кампании США против криптовалютной инфраструктуры Ирана.
5 июн. 2026 г.
Расследования
На публичных блокчейнах уже работает финансовая система с кредитами, аналогами облигаций США и автоматическими рынками капитала. Через DeFi-протоколы прошло более $551 млрд, но большая часть этой активности связана не с экономикой, а со спекулятивным наращиванием рисков
29 мая 2026 г.
Расследования
Около 97% китайских поставщиков химических веществ для производства фентанила принимают оплату в криптовалюте. Объем таких операций продолжает расти вместе с глобальным рынком синтетических наркотиков
22 мая 2026 г.
Расследования
Новый закон впервые делает блокчейн-аналитику официальным обязательным инструментом финансового контроля в США. Власти также получат право ограничивать операции с иностранными криптосервисами, связанными с рисками отмывания денег
20 мая 2026 г.
События
В программе — майнинг, DeFi, Web3, регулирование криптовалют и масштабный нетворкинг.
19 мая 2026 г.