October 8, 2023

Stars [Hacked] Arena

Вы наверное слышали о нашумевшем взломе Stars Arena — ещё один SocialFi по типу FriendTech на Avalanche, который был запущен буквально неделю назад.

Мне посчастливилось пообщаться с тем самым lilitch.eth, которого и обвиняли в взломе данного SocialFi.

Сейчас вы узнаете, как скупость проекта привела к потерям около 3 млн$

📚 | Предисловие

Утром каждый второй паблик или инфл писали об этом событие у себя в блогах. Но особое внимание привлек персонаж под именем lilitch.eth, который написал тред в свой твиттер.

Дело в том, что он один из первых, кто написал разъяснение их большой дыры в контракте, за это на него и посыпался хейт от самой команды Stars Arena.

Прочитать тред можете тут

Если кратко, lilitch.eth утверждал, что функция контракта getPrice() забагована и можно продавать 0 акций, получая при этом AVAX.

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

🎤 | Интервью

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

> Когда ты наткнулся на дыру в контракте?

3 дня назад. Я писал снайпер для Friend Tech, конечно же, чтобы обогатится.

Чуть ошибаюсь с кодом и отправляю транзакции чтобы продать акции, но с 0 AVAX в поле для количества.

После этого смотрю в эксплорере - транзы не фейляться, в добавок мне еще и приходят AVAX. Я конечно очень удивляюсь и иду расследовать, почему же так получилось.

Контракт был неверифнутый - приходится декодить байткод и пытаться разобраться.

Спустя время прихожу к выводу, что проблема в неправильном подсчете цены за акцию, функция getPrice(), которая должна "по логике" возвращать ошибку при amount = 0, возвращала initialPrice = 0.004 AVAX.

При этом, цена транзакции на обычном 25 Gwei составляла около 0.0012 AVAX - что давало около х3 профит с такой махинации.

> Что ты решаешь делать дальше, имея такую профитную схему?

Я, как добросовестный whitehat, 3 часа ищу как мне связаться с командой проекта, чтобы рассказать им проблему и получить какой-то bug bounty.

В итоге я наконец-то добиваюсь контакта с командой. Хочу от них узнать СКОЛЬКО они готовы выделить, если я действительно нашел критическую уязвимость, на что они мне отвечают, что не могут это обсуждать, пока я не скину им свои socials (писал конечно же не с мейна) и сам эксплоит.

Меня такое не особо устраивало, потому что по общению чувствовал, что меня просто кинут, как только я им покажу эксплоит, и никакого bug bounty не будет.

Я предлагаю им найти 3 сторону (гаранта) чтобы провести обмен информацией на что получаю игнор.

Самое смешное, когда меня спрашивают сколько я хочу за эксплоит, я пишу что обычно за критические уязвимости платят 5-10% ТВЛ (на тот момент твл был около 1.1млн$), но я открыт к предложениям, на что получаю "you want 500$?".

> Не думал ли ты вынести их?

Как раз после предложения в 500$, меня выводит из себя, и я иду писать контракт, который продает акции 200 раз в одной транзакции - все работает.
Сразу иду писать тред про уязвимость.
Ссылка на тред - тут
После треда, ненадолго запускаю бота и жду, пока мой контракт скопируют и начнут выносить эту помойку SocialFi.

Так и происходит — нахожу 5+ копий моего контракта, которые забивали блоки и поднимали газ прайс вплоть до момента, пока комиссия, чтобы получить из контракта 1$ за 1$ fee (никаких 5$ fee to gain 1$ и в помине не было).
Тред от овнеров

> Как отреагировал проект на твой тред про них?

Команда наконец берется за дело - им потребовалось около 5 часов, чтобы поменять имплементацию прокси контракта :)
За это время вынесли не особо много - ~20-30k $

Мой тред залетает на 600к просмотров, меня ненавидят, называют фудером, объявляют войну.
https://twitter.com/0xlilitch/status/1709938234640466060

> Какие твои дальнейшие действия после фуда в твою строну?

В конечном итоге команда все пофиксила. Приложение продолжает работу, все довольны, все забыли про всё через час.

При этом новый контракт также не верифают, не говорят откуда будут возвращать украденные AVAX.

Я иду спать, просыпаюсь и вижу TVL в 3$ млн у проекта.

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

Продолжаю опять писать снайпер бота. Вроде как заканчиваю, оставляю работать и ухожу в афк, отдохнуть от всего происходящего.

> Какие твои эмоции были, когда ты увидел их TVL, который приравнялся к 0$?)

Через час сажусь за ПК и вижу TVL в 0$. Мне было очень смешно :)

Начинаю расследовать - все украли одной транзой.
Пишу пост про то, как их взломали.

Если кратко - самой БАЗОВОЙ АТАКОЙ REENTRANCY (я думаю такое бы даже ChatGPT спалил)
https://twitter.com/0xlilitch/status/1710554756748353696

> Какого тебе, когда все обвиняют тебя в взломе проекта?

Я общаюсь с работягами в их дискорде, все думают за взломом стою я и угрожают вычислением и расправой.

Страшно на самом деле когда ВСЕ думают, что ты украл 3 миллиона$.

На какой бы спейс в твиттере я не зашел - все говорили "yeah it's that milady lilitch hacker from yesterday".

> К какому итогу вы пришли с командой Stars Arena?

В итоге сама команда AVAX стала на сторону проекта, писали что "это всего лишь 3 миллиона, не парьтесь".

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

Я же в свою очередь свел конфликт в мирное русло и сделал вот такой твит.
https://twitter.com/0xlilitch/status/1709941849115570401

💭 | Пару слов от меня

Исходя из этой ситуации мы видим, как проект пожадничал 100k$ вознаграждением для bug bounty, а в итоге получил минус в 3 миллиона$.

Обычная история кодера, который хотел сделать дефолтного снайпер бота превратилась в очень нашумевший сюжет.

Иногда нужно выставлять приоритеты более правильней, чем Stars Arena.
Bug Bounty - очень полезная программа для любого проекта, всегда нужно слушать юзеров, которые нашли уязвимости.