История взлома смарт-контракта TON.FUN

Всем привет) Недавно произошла интересная история со мной, и был взломан смарт-контракт на TON.

Расскажем эту историю с обоих сторон (Владельца и Хакера) и к чему в итоге пришли)

История взлома смарт-контракта TON.FUN

Весной 2020 я нашел интересный смарт-контракт и статью о том как написать и опубликовать смарт-контракт в (TON)

Дал задачу 3м программистам поднять данный смарт и сайт. Около месяца они бились, но так и не получилось запустить.

Решил разобраться сам (языков программирования не знаю), сел за комп в 6 вечера, начал изучать и пошел по шагам по инструкции. В итоге 24 часа сидел на диване и случилось чудо! Смарт заработал, сайт поднялся) Купил под это дело последний свободный домен с 3 буквами TON - TON.FUN

Начал по чуть продвигать лотерею, но никто ее рекламировать не хотел (бояться все почему то азартную сферу).

История взлома смарт-контракта TON.FUN

В конце июля вижу начинает играть крупный игрок и проигрывает 2000 TON. Смотрю пишет мне в ТГ, оказывается это владелец канала TON Base. Договорились что верну ему проигрыш - а он сделает рекламу в своем канале) В итоге еще больше аудитории TON узнало о данной лотереи.

История взлома смарт-контракта TON.FUN

Так же он подсказал что есть дырка в смарте, но я так и не нашел кто сможет переписать мне контракт и подумал что вряд ли разрабы будут его ломать, все заняты своими крупными проектами.

История взлома смарт-контракта TON.FUN

В августе я дальше начал думать как продвигать эту лотерею.

Решил создать 1000 NFT и разослать их по кошелькам китов. Эффекта это не дало, и я забыл про эту лотерею, занимался основным своим бизнесом (Разработка мобильных приложений и игр)

23 октября запускается TON Hack Challenge. Внимания я особо на него не обратил и не смотрел что там за конкурсы, так как наша команда не особо сильна в разработке смартов.

27 октября Павел Валерьевич, как обещал, запускает аукцион fragment.com. За имена casino, auto, bank начинают биться Киты. Огромная аудитория ТГ следит за этим и переходит в explorer и смотрят с каких кошельков делают ставки. И видят это:

История взлома смарт-контракта TON.FUN

В этот день я понял что не зря сделал рассылку NFT (Повалил народ на сайт лотереи)

Вечером того же дня сижу спокойно вечером дома, купил микроскоп, разглядываю бактерии, телефон без звука. Открываю телефон - смотрю тысячи транзакций по лотерее за час прошли - баланс опустошен до нуля (было 6000 TON на балансе смарт-контракта лотереи)

Через explorer смотрю куда вывели все монеты и нахожу кошелек, пишу ему сообщения с транзакциями:

История взлома смарт-контракта TON.FUN

Так же попросил Андрея со своей стороны описать что происходило в этот момент и как получилось взломать смарт:

История взлома смарт-контракта TON.FUN

... через пару минут мне пишет в личку Андрей (Позже я только узнал что он победитель конкурса (TON Hack Challenge) и он взломал контракт номер 7, не по сценарию, что вызвало удивление у TON Foundation)

История взлома смарт-контракта TON.FUN

Мы начали общаться и за пару дней написали новый пуленепробиваемый смарт-контракт - lotto.ton

Вместо обычного прибавления LT, о котором написано в tvm.pdf, было применено намного более безопасное решение (часть позаимствована у TON Fruits).

Сейчас к Seed рандома прибавляется хеш от [хеша сообщения, времени, LT, предыдущего хеша]. Это намного безопаснее простого прибавления LT, но и на этом мы не остановились.

Для пущей безопасности был реализован пропуск блоков посредством перевода каждой ставки в мастерчейн и обратно. Для этого был разработан специальный смарт-контракт.

На днях решил обновить дизайн сайта под стиль тех самых NFT, зайдите зацените - ton.fun

Благодарим за внимание!

p.s. Данную статью написали для разработчиков TON, чтобы не допускали моих ошибок в будущем)
Начать дискуссию