{"id":13764,"url":"\/distributions\/13764\/click?bit=1&hash=79976b2d7abe8a57904084c6487771aa36d771f529a5bf38263ec256faa78a49","title":"\u041a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u0440\u0430\u0441\u0442\u0430\u044e\u0442 \u0443\u043f\u0430\u0432\u0448\u0438\u0435 \u0430\u043a\u0446\u0438\u0438?","buttonText":"\u0410 \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442?","imageUuid":"ef3e9b0f-1781-5f5e-a821-98d21c2b58eb","isPaidAndBannersEnabled":false}

История взлома смарт-контракта 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

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

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