Взломы бирж и смарт-контрактов. Как и сколько?

Взломы бирж и смарт-контрактов. Как и сколько?

@cheredin

В последнее время все чаще выходят новости с заголовком: «Хакеры украли N миллионов долларов у проекта M из-за уязвимости в смарт-контракте». Обычно вслед за этим следует падение курса токена на 20%+ и дальнейшая коррекция. Новость, которая побудила меня написать этот текст — недавняя атака на смарт-контракт KICKICO, которую не обсуждал только ленивый.

Но сначала расскажу о взломах: самые крупные и самые громкие, а потом о тех, что произошли с начала 2018 года.

Как всё начиналось

Самые большие хакерские атаки и скамы. Взлом Mt. Gox до сих пор никто не превзошёл.

Самый первый и самый крупный в криптовом эквиваленте инцидент произошел в 2014 году с печально известной биржей Mt. Gox. Тогда было украдено 850 000 биткоинов, на общую сумму $480 млн (по курсу на момент ограбления). В августе 2016 года взломали Bitfinex, украв $72 млн (120 000 BTC). В дальнейшем подобное повторялось, однако из-за эволюции систем защиты проблем с биржами становилось все меньше.

Великолепно иллюстрирует необходимость алгоритмов безопасности случай с  Binance. 7 марта 2018 года внимание криптосообщества было приковано к бирже из-за непонятных торгов пары VIA/BTC. Так как Чанпен Чжао, CEO компании, не пальцем деланный, торги моментально остановили и запретили вывод VIA с биржи. Вскоре общественность узнала всю историю.

Основной целью злоумышленников стал памп и последующая продажа монеты VIA. Этот случай доказывает, что хакеры хорошо планируют проведение своих операций и вот почему:

  1. Посредством поддельных сайтов (фишинга) злоумышленники 2 месяца собирали регистрационные данные. Чтобы афера не раскрылась, после ввода данных пользователь попадал на сайт Binance. Эта стадия прошла незаметно;
  2. Используя специальное программное обеспечение и имея в распоряжении приличные средства, хакеры начали с огромной скоростью покупать VIA, разгоняя курс на 1000%;
  3. В это время с аккаунтов хакеров шла продажа заранее купленных VIA по сумасшедшим для этой монеты ценам;
  4. Если вы когда-нибудь пользовались биржей, то знаете, что вывод на кошелек с аккаунта биржи происходит не сразу, поэтому здесь их и остановили;
  5. Пострадавшим вернули средства, а мошенникам заблокировали возможности вывода и торгов.

На этом хакеры поняли, что взламывать топовые биржи уже не получается и переключились на смарт-контракты.

Что такое смарт-контракт?

Смарт-контракт — это программный код. Все в данной области подчиняется примитивным законам логики, например: «Если на этот адрес пришли эфириумы, рассчитай необходимое количество токенов и отправь их на тот же адрес».

Код простенького смарт-контракта

Естественно, при выполнении примитивных операций, смарт-контракт не может «сломаться». Его самое уязвимое место — автор контракта.

Это сейчас в открытом доступе есть множество примеров контрактов с комментариями, но раньше такого не было. Например, тут больше 1500 страниц  различных смарт-контрактов (около 40 000 штук), можно скопировать полностью, а можно подсмотреть какие-то идеи. Добавим к этому то, что смарт-контракт выгружается в блокчейн и изменить его невозможно.

И еще: смарт-контракт не может хранить средства, допустим, собранные на ICO, он направляет их на кошелек. В 99% используются так называемые мультиподписные (мультисиг, MultiSig) кошельки.

Зачем это делается?

Представьте, что CEO проекта вдруг очень захотел на Мальдивы, но все деньги на кошельке для ICO. Что делать? Просто так снять их не получится, потому что в мультиподписном кошельке недостаточно одного ключа для того, чтобы его открыть. Например, чтобы перевести средства с кошелька ICO-проекта нужны ключи CEO, CTO, юриста и гаранта (эскроу), поэтому снять деньги в одиночку не получится.

Однако чаще настраивают так, что нужно 3 из 4 или 4 из 5 подписей. Кто-то один может послать всех подальше или еще что-нибудь, поэтому 5 из 5 в реальной жизни бывает крайне редко.

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

DAO — первый.

Одна из самых грустных историй всего блокчейн-комьюнити связана со взломом DAO. Именно с этого момента эфириум разделился на Ethereum и Ethereum Classic.

Что такое DAO?

DAO (англ. decentralized autonomous organization, де­цен­тра­ли­зо­ван­ная ав­то­ном­ная ор­га­ни­за­ция) — слож­ный смарт-кон­тракт, ко­то­рый дол­жен был на­все­гда из­ме­нить Ethereum.

Это была невероятная по своей крутости идея, скорее всего даже круче, чем EOS сейчас.

Что предлагали

DAO должен был стать фондом для финансирования разработчиков dApps (децентрализованных приложений). Если вы хотели получить финансирование на создание собственного приложения, то действия были бы такими:

  1. Представить идею кураторам — известным личностям Эфириума;
  2. Если идею одобрили, то запускается голосование, где нужно набрать одобрение 20% комьюнити;
  3. Если голосование прошло успешно, то проект получает финансирование.

Открытость и потенциал DAO были чем-то удивительным, инвесторы встали в очередь за токенами DAO.  Всего было вложено 14% из всех намайненных на тот момент эфиров — гигантская сумма.

Начало конца

Если вам не нравилась политика, проводимая DAO, вы могли спокойно вывести свои средства, сделав обратный обмен DAO — ETH. Это и стало роковым моментом.

Суть найденной уязвимости такова:

  1. Запускается процесс обратного обмена;
  2. Пока транзакция не зарегистрирована, пользователь повторяет обмен снова и снова.

В кратчайшие сроки треть всех эфиров оказалась под контролем хакеров.

Самое необычное здесь то, что разработчикам ранее говорили об этой уязвимости, однако они сказали, что это не критично.


Эфириум зря доверился DAO

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

Единственным выходом стал хардфорк — найти блок до атаки на DAO и продолжить новый блокчейн именно после него. На это согласились Виталик Бутерин и Гэвин Вуд — сооснователи Эфириума. Те, кто не согласился на эти условия и продолжили пользоваться тем же самым блокчейном после взлома назвали свою валюту Ethereum Classic.

Кстати, после потери $50 млн, множество людей разочаровалось в криптовалютах и курс Эфириума упал с $20 до $13. Сейчас курс ETH около $420.

Перейдем к более свежим новостям, потому что DAO лишь показал хакерам — блокчейны уязвимы из-за ошибок людей.

Взломы 2018-го

26 января — биржаCoincheck.

Похищено NEM (XEM) на $533 млн. Одно из крупнейших ограблений в истории, курс монеты сразу просел с $1,02 до $0,76.

Сразу после кражи NEM, по сообщениям,с кошельков биржи было выведено Ripple на $123 млн, но CEO это не подтвердил.

Никого не нашли, хардфорка не будет, да мы уже и забыли. Спасение утопающих — дело рук самих утопающих.

22 апреля — биржа OKEX.

Как раз здесь взлом произошел через уязвимость смарт-контракта.

Хакеры взломали площадку и вывели 8 вигинтиллион единиц BEC, чтобы представить эту цифру, припишите к восьмерке 63 нуля.

8 000000000000000000000000000000000000000000000000000000000000000

Торги токеном прекратились, сработала система безопасности, однако остановить транзакции не удалось. Разработчики BEC заявили, что «откатят» блокчейн и вернут все средства.

11 июня — взлом южнокорейской биржи Coinrail.

Потери биржи составили около $40 млн. Курс биткоина упал более чем на 10%, а общая капитализация криптовалют снизилась на $40 млрд!

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

20 июня — жертвой стал Bithumb.

Похищено $30 млн, курс биткоина упал на 5%.

26 июля — атака на KICKICO. Последний на момент публикации крупный взлом криптопроекта.

Злоумышленникам удалось (вопрос — как?) завладеть ключом для управления смарт-контрактом KICK, удалить токены на 40 кошельках, создать новые кошельки с такими же суммами (система безопасности оказалась бессильна, поскольку общее число токенов не изменилось).

В результате — украдено более 70 млн токенов, что эквивалентно $7,7 млн.

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

Мы публиковали инсайд о планах KICKICO по интеграции с EOS и открытию новых офисов. Позитивные новости привели к росту цены Kickcoin почти на 100%, скорее всего это и привлекло внимание хакеров к проекту. После взлома цена токена на бирже не только не упала, но и продолжала расти, хоть о взломе было слышно из каждого утюга. Удивительно. По данным Coinmarketcap на 2 августа, KickCoin вырос за сутки на 11% и вошёл в топ-100 криптовалют.  

Как обезопасить проект от взлома

В феврале 2018 года проблема привлекла внимание группы специалистов из Национального университета Сингапура, Университетского колледжа Лондона, а также гуманитарного колледжа Yale-NUS, который Йельский университет и Национальный университет Сингапура учредили совместно.

Они проанализировали почти все смарт-контракты и обнаружили различные уязвимости в 34 200 из них!

Итак, что сделать, чтобы минимизировать вероятность потери средств:

  1. Брать чужой «обкатанный» код. Нет, это не воровство, если код смарт-контракта лежит в открытом доступе;
  2. Провести аудит смарт-контракта. Сейчас достаточно много организаций, которые с радостью (за деньги) покопаются в вашем коде на предмет уязвимостей;
  3. Назначить вознаграждение за найденные баги. Если вы проводите ICO, то спокойно можете назначить приз в собственных токенах.

Если проект предпринял все для своей безопасности, то ему можно верить. Возможно CEO или разработчики лишь малая часть нашей аудитории, но данная информация будет полезна и инвесторам.  


Итоги

  1. Взломы блокчейн-проектов начались, как только в индустрии появились приличные деньги.
  2. Смарт-контракты изменили мир, однако эту  технологию создают люди. А там, где люди, там и ошибки — это естественно. Защиты от этой уязвимости пока не придумали.
  3. Всегда найдутся те, кто захочет использовать дыры безопасности, возникающие из-за низкой квалификации разработчиков, халатности или случайных ошибок.
  4. Зачастую атакам подвержены молодые биржи и ICO, но периодически потряхивает и гигантов.
  5. Безопасность инвестиций — ответственность разработчиков. Они должны приложить все усилия для защиты денег, которые им выделили пользователи.
  6. Истинное лицо проекта раскрывается в критических ситуациях. Компании, которые возвращают потерянные средства, показывают человеческое отношение, заслуживают доверие пользователей и продолжают развиваться.