
15 июня 2026 года злоумышленник нашёл способ получать токены Thetanuts Finance почти даром. Секрет был не в хитрой схеме обмана, а в математике: если уменьшить одно число почти до нуля, формула расчёта депозита может округлиться до того же нуля. И тогда платить за токены вообще не нужно.
Введение
Thetanuts Finance — протокол, работающий с опционами в DeFi (децентрализованных финансах). У атакованного vault — это контракт-«хранилище», в которое участники вносят активы и получают взамен токены, представляющие их долю, — была система индексных токенов: своего рода единица учёта, показывающая, какая доля от общего хранилища принадлежит каждому участнику.
Проект подтвердил: пострадавший vault был старым, устаревшим и не относится к текущим продуктам Thetanuts. Но, как и в других похожих случаях, устаревший контракт продолжал существовать в блокчейне и хранить реальные активы.
Ход инцидента
1️⃣ Мгновенный кредит. Злоумышленник взял флэш-лоан — мгновенный кредит, который берётся и возвращается в рамках одной транзакции без залога.
2️⃣ Обвал количества токенов почти до нуля. На полученные средства атакующий временно уменьшил общее количество выпущенных индексных токенов почти до нуля. Это не взлом — он просто использовал штатные функции контракта, чтобы вывести из обращения почти все токены на короткое время.
3️⃣ Округление в пользу атакующего. Здесь сработала ключевая ошибка. Чтобы рассчитать, сколько нужно внести при получении новых токенов, контракт делил баланс хранилища на общее количество выпущенных токенов. Когда это количество стало почти нулевым, при делении и округлении вниз (целочисленное деление, которое отбрасывает дробную часть) требуемая сумма депозита округлилась до нуля.
4️⃣ Бесплатный выпуск опционных токенов. Раз депозит формально равнялся нулю, контракт разрешил атакующему получить опционные токены Thetanuts — это не токены управления проектом, а токены конкретных позиций в опционных vault-контрактах, дающие право на реальные активы внутри них — практически без оплаты.
5️⃣ Вывод стоимости. Получив эти токены, злоумышленник вывел часть их реальной стоимости в виде USDC. Прямой ущерб составил около $105,5 тыс.
Спасение белым хакером
Отдельно стоит отметить: помимо злоумышленника, той же уязвимостью воспользовался и так называемый белый хакер — специалист по безопасности, который находит и использует уязвимости не для кражи, а чтобы спасти средства от настоящих атакующих. Он провёл аналогичную rescue-транзакцию и получил на свой адрес опционные токены на сумму около $2 млн. После этого он связался с проектом и предложил вернуть спасённые средства безопасным способом.
Почему это стало возможным
Контракт рассчитывал нужную сумму депозита по формуле: баланс хранилища делится на общее количество выпущенных токенов. Эта формула работает корректно, пока количество токенов остаётся достаточно большим.
Но контракт не был защищён от ситуации, когда это количество становится критически маленьким. Когда злоумышленник искусственно обвалил его почти до нуля с помощью флэш-лоана, при делении на очень маленькое число и последующем округлении вниз результат — требуемый депозит — мог получиться равным нулю.
По сути, формула, рассчитанная на «нормальные» значения, перестала работать корректно в экстремальной зоне — там, где знаменатель почти равен нулю. Это классическая ошибка проектирования: контракт не проверял, не стало ли общее количество токенов слишком маленьким для безопасного расчёта.
Детали расследования: движение средств
Похищенные средства поступили на адрес злоумышленника 0xAf3a0FdBFB0e3127247B66a042310e09C32F2299. Все полученные USDC были обменяны на ETH и на момент расследования остаются на балансе этого адреса.
Основная транзакция: 0xbba9f138fe39503bfd1aa62932dbd6ab35d37d23d48e4b7bf2988a9d5dc39fec
Заключение
Атака на Thetanuts Finance показывает, как небольшая ошибка в математике расчётов может стоить десятков тысяч долларов. Контракт не предусмотрел крайний случай — слишком маленькое количество выпущенных токенов — и формула, корректная в обычных условиях, сломалась именно тогда, когда злоумышленник искусственно создал эти условия.
Прямой ущерб составил около $105,5 тыс. — относительно небольшая сумма по сравнению с $2 млн, которые удалось спасти белому хакеру той же уязвимостью, но раньше злоумышленника.
Команда «КоинКит» продолжает отслеживать движение средств на указанном адресе.


