Объяснение механизма атаки вкратце: функция initWallet() в коде, позволяющая определить владельца кошелька, оказалась публичной, и её мог вызвать любой человек. После переопределения владельца оставалось только перевести деньги. Более полное объяснение (на англ.)
Кошелёк хакера: etherscan.io/address/0xb3764761e297d6f121e79c32a65829cd1ddb4d32
(уже начался перевод средств на другие адреса)
Группа white hats смогла вывести эфира в 76 миллионов долларов (и ещё 80 миллионов в различных токенах) с уязвимых кошельков для защиты средств
etherscan.io/address/0x1dba1131000664b884a1ba238464159892252d3a
Были украдены деньги с кошельков следующих ICO:
- Edgeless Casino
- Swarm City
- ?ternity blockchain
В кошелек white hats выведено почти 40% всего инвестиционного портфеля криптовалютного фонда satoshi.fund — более 7 миллионов долларов.
Multisig (мульти-подпись) кошелек в теории должен был предоставить дополнительную защиту из-за требования подписи нескольких человек для операции со средствами.
Оповещение об уязвимости в блоге Parity
Официальное заявление Swarm City, подтверждающее потерю 44,055 ETH.
invested in Aeternity
lol
and they lost like 18million
f#$@ morons…
It looks like it will be a eternity until you get your money back ;)
The DAO 2.0. Только хард-форка эфира для спасения средств в этот раз не ожидается. Твит Виталика Бутерина в ответ на вопрос, почему был произведен хард-форк цепи ethereum в случае с The DAO, а здесь его не будет:
- Менее зрелая экосистема в то время
- Тогда на кону был больший % от всего ЕТН
- (самое важное) Хакер может просто перевести средства, поэтому хард-форк невозможен
UPD. С кошелька white hat была отправлена транзакция с текстом
I am the author of https://www.reddit.com/r/ethereum/comments/6obofq/a_mo.....
где объясняется, как будет происходить возврат средств. Если коротко — надо будет просто ждать, смарт-контракт будет «проапгреджен» и деньги возвратят на его адрес. Комиссия за перевод будет браться из пожертований The DAO Rescue
Комментарии (51)
FenixFly
20.07.2017 07:15А можно запретить всей системе проводить операции с этим кошельком? Пусть хоть миллиард украдут, воспользоваться все равно не смогут.
ProRunner
20.07.2017 07:40+1То, о чем вы говорите, и есть хард-форк сети. Он и был произведен в случае со взломом The DAO, из-за чего произошёл раскол сети эфира на ETH и ETC.
Но в случае с The DAO у сообщества было значительное время до того, как хакер смог бы воспользоваться деньгами. Здесь, как Виталик и говорил, хакер может просто перевести деньги (например, через какой-нибудь eth-миксер), так что отследить их дальнейшую судьбу будет невозможно.
zagayevskiy
20.07.2017 12:15-3долбодятлы сами виноваты, имхо
ProRunner
20.07.2017 14:19+2Кто? Разработчики кошелька или пользователи? Разработчики несомненно, но пострадали-то не они.
Если пользователи, то извините, давайте хакер найдет уязвимость в какой-нибудь программе, которой вы пользуетесь, и уведет с вашего банковского счета все ваши накопления. Тоже долбодятлом будете себя считать?powerman
20.07.2017 17:04+1Ну, вообще-то банковские трояны именно этим и занимаются уже очень много лет. И да, долбодятлом, почему-то, при этом принято считать именно пострадавшего — не обновлял ОС, не поставил правильный антивирус, качал из инета игрушки на комп с ДБО, запускал аттачи к письмам, etc. Я не говорю, что случай из статьи идентичен, там всё-таки неясно, что могли предпринять пострадавшие для своей защиты (ну, кроме выделения средств на аудит безопасности этого кода), но определённые параллели между этими ситуациями определённо наблюдаются.
rPman
20.07.2017 19:31+1Пользователи должны понимать, что контракты — это доверие их создателям/разработчикам, и если создатели не имеют опыта/мошенники — быть готовым к потерям средств.
Токены — не децентрализованная криптовалюта, это цифровой актив, с централизованным контролем, а в случае с контрактами — еще и подверженный ошибкам реализации.
p.s. интересно, когда разработчики (платформы типа ethereum или может библиотеку хитрых контрактов разработать) начнут добавлять в контракты механизмы возможности отката транзакций, специально на такие случаи как в статье, т.е. превратив подсистему в полный аналог централизованных банков.
kisskin
20.07.2017 07:15+17ага, давайте каждый раз, как какой-то банк ограбят, будем новые деньги вводить.
Enam
20.07.2017 14:36Потребительские вклады в банках обычно застрахованы, как и личные средства банков.
kisskin
21.07.2017 20:491. Кто платит-то за эти страховки не задумывались? На санацию Банка Москвы потратили больше 100 млрд рублей, это 1тр из вашего кармана и моего и всех остальных и таких банков не 1 десяток. Не больно ли жирно содержать этих дармоедов, которые по факту просто воруют наши деньги?
2. И про забалансовые вклады, я так понимаю, вы не слышали?
Именно поэтому у криптовалют большое будущее — больше не будет ненужных вороватых «кровососов» и всяких сервисов типа робокассы с 20% комиссии за оплату.
amarao
20.07.2017 11:58+3Супер умные но не супер надёжные контракты.
ProRunner
20.07.2017 15:17Ну ошибки разработчиков были и будут. То, что в текущей реализации очень легко наступить на грабли и потерять при этом все деньги — это да.
С этой точки зрения мне нравится разрабатываемый в данный момент блокчейн eos, в котором при необходимости хардфорки можно провести быстро и безболезненно. Одна эфир уже есть и работает а eos пока существует только на бумаге (хотя разработчики уже собрали больше 200 млн. при ожидаемой капитализации под 2 миллиарда долларов).
amarao
20.07.2017 15:26+3Легко проводить хардфорки == центральная authority, способная «блокировать активы в случае обнаружения подозрительной активности и в связи с отказом предоставить форму УФН-БМ-42 бис 4 в отведённый законом срок в отдел борьбы с экономической активностью ЦБ УРФ».
Нафиг-нефиг.ProRunner
20.07.2017 15:39+1Не обязательно центральная authority. Возьмём steem/golos с его delegated proof of stake консенсусом. У них там уже под двадцать хардфорков безболезненно прошли. Участники сети выбирают "делегатов", которые решают/поддерживают работу сети.
amarao
20.07.2017 16:38При этом предполагается, что уж на этот раз точно в коде не будет ошибок. В коде выбора authority, например.
ProRunner
20.07.2017 16:53Один участок кода легче проаудировать, чем каждый контракт, отправленный в сеть.
amarao
20.07.2017 17:16+1«проаудировать» — это доказать, что в нём нет багов?
(запасаюсь попкорном) Ну, расскажите мне про «проаудирование» кода указанных систем, после которых там не остаётся багов.
Если остаются — возвращаемся к вопросу о том, что делать, если в коде хардфорка баг, который эксплуатируется.ProRunner
20.07.2017 20:07Я сомневаюсь что можно доказать что где-то нет багов. Просто по крайней мере утверждать с определенной долей уверенности. Хотя потом могут и найтись, да.
По второму вопросу — представьте, что в консенсусе эфира найден баг, позволяющий одному человеку присвоить себе средства из любого кошелька и он переводит себе абсолютно весь эфир на один адрес. Кому нужен будет такой эфир и сколько он будет стоить? Понятно, что даже при наличии такой возможности злоумышленник этого делать не будет, но мы говорим о гипотетических ситуациях.
Что сделают разработчики блокчейна / владельцы эфира? Они просто найдут новый способ консенсуса и напишут новый код, возращающий сеть в состояние до атаки (подобное и произошло с разделением eth/etc). То есть да, делается новый хард-форк, в данном случае изменяющий код "на самом высоком уровне". Но опять же, что proof of work что proof of stake изучены более-менее хорошо и с определенной долей уверенности можно утверждать что в них нет багов. Я же говорю про систему, которая позволит регулировать систему без вмешательства в код самого блокчейна.
amarao
20.07.2017 20:16+2Допустим, такой код найден. Злоумышленник цедит деньги и через ближайший обменник выводит их во что-то другое. Постепенно начинают расходиться слухи о том, что «воруют деньги». Курс начинает падать. Злоумышленник увеличивает «норму отбора», слухи становятся паническими, биржи начинают отказываться принимать валюту, злоумышленник сливает сколько может через оставшиеся биржи, после чего продаёт за сколько-то (другой валюты) уязвимость какому-нибудь zero-day трейдеру или security researcher'у.
После публикации баг исправляют, но…
С потерянными деньгами-то что делать? Отменять продажу на бирже? Биржи против. Делать хардфорк всех валют, в которые были выведены деньги? Может, сразу вселенную форкнуть?ProRunner
20.07.2017 20:34В таком случае да, ничего не сделаешь. Собственно, поэтому и со вчерашним взломом хард-форк бесполезен, деньги уже пошли гулять
andvgal
20.07.2017 15:11+1Это и есть обратная сторона медали. Рано или поздно появятся регуляторы и тут. Будет возможность согласовывать блокировку, делать переводы активов без ключа, но с одобрения сети для возврата украденного, в т.ч. возможность восстановления доступа к активам при утрате ключей в частном случае. Таков естественный процесс развития любой системы.
ProRunner
20.07.2017 15:24+1Я, кстати, всеми руками за. Регуляторы не в смысле регулирующих органов государства, а в смысле регулирования изнутри сети (тот же консенсус DPoS).
На текущий момент с криптовалютой очень просто отстрелить себе не только ногу, но и голову.
kozyabka
20.07.2017 15:46+3то есть, если ты всем не понравился на фотке профайла, то все могут решить у тебя бабла отжать?
ProRunner
20.07.2017 15:54В частном случае да. Но тут уже финансовые интересы участников вмешиваются. Кто будет покупать на бирже такой альткоин, в котором с плохой фоткой профайла деньги отнимают.
bano-notit
21.07.2017 02:24А это просто может случаться не так часто и не так публично, так что любой. У нас по идее тоже нельзя взятки давать, "кто же поверит и доверит что-то продажному чиновнику", но всё же есть у нас великое "не пойман — не вор", которые покрывает и вашу ситуацию, и ситуацию с чиновниками)
Abyrvalgov
20.07.2017 18:39+1Вы меня извините, если вопрос глупый, за эфиром я особо не следил, но не могу понять две вещи в этой атаке.
1. Откуда брались сами кошельки, попавшие под атаку? Не мог же атакующий просто посылать запросы на рандомно, брутфорсом сгенерённые наборы символов — такой перебор занял бы тысячи лет, а не пару часов. Понятно, что тут нужен не приватный ключ, а некий публичный адрес, но всё-таки — откуда ему взяться, если человек сидит дома, примус починяет, а на кошельке живут себе эфирки?
2. Как конкретно посылался вызов функции? В эфире можно послать ноль ETH на чужой кошелёк, если знаешь его адрес, а попутно прицепить вызов функции, который ещё и вызовется? Т.е. система не пересылает просто 0 eth с одного кошелька на кошелёк, она зачем-то ещё и пересылает произвольный код?ProRunner
20.07.2017 19:36+1Все адреса, с которых либо на которые отправлялись средства, попадают в блокчейн эфира. Блокчейн эфира можно посмотреть и в интернете, например на https://etherscan.io. Там же можно посмотреть весь текст смарт-контракта, если этот адрес — смарт контракт. Найти кошелек с определенным смарт-контрактом можно либо через сам блокчейн, либо, подозреваю, и через поисковые системы. К тому же деньги были выведены с определенных кошельков, используемых в ICO — злоумышленнику не нужно было их искать.
- Каждый может опубликовать в сети эфира смарт-контракт — текст программы, выполняющий определенные функции. То есть да, можно прицепить вызов функции, которая выполнится при переводе средств на данный кошелек (в том числе и с 0 эфира). Произвольный код не пересылается, выполняется код, уже определенный в смарт контракте. В данном случае в нём была ошибка, которая и привела к потере средств.
SwVZFSf4fLt8NSZNfV87
20.07.2017 18:51+3А какой децентрализации и надёжности можно говорить, если есть возможность отката транзакций.
Неважно будут они её делать или нет, сама возможность уже подрывает всё доверие.
Настоящая криптовалюта должна быть децентрализована, анонимна и без возможности отката.
Что сделано, то должно сохраниться навсегда и никто не может это отменить.
Иначе, в чём отличие от обыкновенных транзакций на сервере с одной БД, кроме супер крутого шифрования, как нам всем рассказывают. И зачем тогда майнинг?
CDN с шифрованием, где все данные берутся с центрального сервера и проверяется их целостность. Но всегда можно сделать откат на центральном сервере.
А уязвимости конкретных сервисов, которые хранят средства в этой криптовалюте касаются только их и их пользователей. Эти уязвимости не подрывают надёжность криптовалюты т.к. не она уязвима, а сервис, которому люди доверили свои кошельки.
Безусловно кража огромного количества средств повлечёт изменение курса.
Если подхватят СМИ, то будет новость про взлом криптовалюты и паника у пользователей.
Но мне кажется стоит задуматься именно над возможностью отката, она и есть главный минус технологии.
ruzhovt
20.07.2017 19:52https://etherscan.io/address/0x1dba1131000664b884a1ba238464159892252d3a
а этих пацанчиков теперь 85 млн баксов на одном акке.
пора майнить приватный ключ к ихнему кошельку вместо коинов :)ProRunner
20.07.2017 20:10Не забудьте ещё про 95 миллионов в токенах эфира. Однако будем надеятся, что это действительно вайт-хэт и деньги вернут владельцам.
А, кстати, они сами себе транзакцию отправили с текстом, там есть дальнейший план действий
I am the author of https://www.reddit.com/r/ethereum/comments/6obofq/a_modified_version_of_a_common_multisig_had_a/
futureader
20.07.2017 22:48+2Всегда думал что за любой валютой должна стоять хоть какая-то армия которая в случае необходимости докажет состоятельность этой валюты.
TimsTims
21.07.2017 00:50+1А о самом главном как-то не упомянули: вроде как, деньги «украли» белые шляпы, и они их обещали вернуть как только всё исправят. Поэтому хакеры хоть и хакнули, но лишь чтобы это не сделали другие.
ProRunner
21.07.2017 07:29Да вроде это понятно из определения "белых шляп". Да и написано же "Группа white hats смогла вывести эфира… для защиты средств", а в upd внизу дается ссылка на пост, где они объясняют, как будет проходить возврат денег.
Eddik
21.07.2017 00:53Реальные, бумажные контракты ломаются точно таким же способом и денег на этом украдено значительно больше. Вообще не понимаю предмета обсуждения, проблема стара как мир.
CherryPah
21.07.2017 07:25Проблема стара как мир и каждая новая
криптовалютасистема начинает свой хайп с утверждения, что вот в ней то именно такой баг и пофиксили и возможность взлома невозможна даже гипотетически
Проходит полгода
Упс, придется форкаться (или не форкаться) в зависимости от процента утекшего баблаEddik
21.07.2017 13:25+2Вы не поняли. Это не взлом, это и есть подлинная эксплуатация достоинств системы. В реальном мире, если вы подпишете контракт, где написано что отдаете свои деньги любому желающему, который попросит, такой контракт можно оспорить в суде(хозяйственном/конституционном), а здесь все будет по букве закона без шанса на ревизию. Всем это так нравилось-так нравилось, прозрачные правила игры, технологические гарантии исполнения, а когда доходит до дела, оказывается что понятия все же лучше, чем буква закона.
Sklott
24.07.2017 11:38Напомнило одну фентезийную книгу. Та любой закон можно было сделать «магическим», т.е. никто не смог бы его нарушить точно так же как закон природы, и… ни один закон так не обрабатывали, т.к. всегда кому-то, чаще всего как ни странно самому государству, законы надо нарушать…
Shador
Не "Больше на кону, чем просто % от всего ETH", а "Тогда на кону был больший % от всего ЕТН".
iNickname
Не согласен.
Скорее всего имеется ввиду репутация и т.п. сейчас.
ProRunner
Да нет, думаю shador прав. Я then c than перепутал при переводе. Виталик говорил про «больше на кону в то время»
alex_blank
Нет, имеется в виду именно stake, в смысле денег. Это очень важно в свете перехода на алгоритм proof-of-stake (PoS), где хакер смог бы получить слишком много влияния благодаря украденным деньгам.