История взлома смарт-контракта TON.FUN
Всем привет) Недавно произошла интересная история со мной, и был взломан смарт-контракт на TON.
Расскажем эту историю с обоих сторон (Владельца и Хакера) и к чему в итоге пришли)
Весной 2020 я нашел интересный смарт-контракт и статью о том как написать и опубликовать смарт-контракт в (TON)
Дал задачу 3м программистам поднять данный смарт и сайт. Около месяца они бились, но так и не получилось запустить.
Решил разобраться сам (языков программирования не знаю), сел за комп в 6 вечера, начал изучать и пошел по шагам по инструкции. В итоге 24 часа сидел на диване и случилось чудо! Смарт заработал, сайт поднялся) Купил под это дело последний свободный домен с 3 буквами TON - TON.FUN
Начал по чуть продвигать лотерею, но никто ее рекламировать не хотел (бояться все почему то азартную сферу).
В конце июля вижу начинает играть крупный игрок и проигрывает 2000 TON. Смотрю пишет мне в ТГ, оказывается это владелец канала TON Base. Договорились что верну ему проигрыш - а он сделает рекламу в своем канале) В итоге еще больше аудитории TON узнало о данной лотереи.
Так же он подсказал что есть дырка в смарте, но я так и не нашел кто сможет переписать мне контракт и подумал что вряд ли разрабы будут его ломать, все заняты своими крупными проектами.
В августе я дальше начал думать как продвигать эту лотерею.
Решил создать 1000 NFT и разослать их по кошелькам китов. Эффекта это не дало, и я забыл про эту лотерею, занимался основным своим бизнесом (Разработка мобильных приложений и игр)
23 октября запускается TON Hack Challenge. Внимания я особо на него не обратил и не смотрел что там за конкурсы, так как наша команда не особо сильна в разработке смартов.
27 октября Павел Валерьевич, как обещал, запускает аукцион fragment.com. За имена casino, auto, bank начинают биться Киты. Огромная аудитория ТГ следит за этим и переходит в explorer и смотрят с каких кошельков делают ставки. И видят это:
В этот день я понял что не зря сделал рассылку NFT (Повалил народ на сайт лотереи)
Вечером того же дня сижу спокойно вечером дома, купил микроскоп, разглядываю бактерии, телефон без звука. Открываю телефон - смотрю тысячи транзакций по лотерее за час прошли - баланс опустошен до нуля (было 6000 TON на балансе смарт-контракта лотереи)
Через explorer смотрю куда вывели все монеты и нахожу кошелек, пишу ему сообщения с транзакциями:
... через пару минут мне пишет в личку Андрей (Позже я только узнал что он победитель конкурса (TON Hack Challenge) и он взломал контракт номер 7, не по сценарию, что вызвало удивление у TON Foundation)
Мы начали общаться и за пару дней написали новый пуленепробиваемый смарт-контракт - lotto.ton
Вместо обычного прибавления LT, о котором написано в tvm.pdf, было применено намного более безопасное решение (часть позаимствована у TON Fruits).
Сейчас к Seed рандома прибавляется хеш от [хеша сообщения, времени, LT, предыдущего хеша]. Это намного безопаснее простого прибавления LT, но и на этом мы не остановились.
Для пущей безопасности был реализован пропуск блоков посредством перевода каждой ставки в мастерчейн и обратно. Для этого был разработан специальный смарт-контракт.
На днях решил обновить дизайн сайта под стиль тех самых NFT, зайдите зацените - ton.fun
Благодарим за внимание!