Из-за уязвимости в коде смарт-контракта multisig кошелька Parity (1.5 и более поздний) хакер смог вывести монет ethereum в эквиваленте 31 миллиона долларов.

Объяснение механизма атаки вкратце: функция 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, а здесь его не будет:

  1. Менее зрелая экосистема в то время
  2. Тогда на кону был больший % от всего ЕТН
  3. (самое важное) Хакер может просто перевести средства, поэтому хард-форк невозможен


UPD. С кошелька white hat была отправлена транзакция с текстом
I am the author of https://www.reddit.com/r/ethereum/comments/6obofq/a_mo.....
где объясняется, как будет происходить возврат средств. Если коротко — надо будет просто ждать, смарт-контракт будет «проапгреджен» и деньги возвратят на его адрес. Комиссия за перевод будет браться из пожертований The DAO Rescue
Поделиться с друзьями
-->

Комментарии (51)


  1. Shador
    20.07.2017 02:57
    +2

    Не "Больше на кону, чем просто % от всего ETH", а "Тогда на кону был больший % от всего ЕТН".


    1. iNickname
      20.07.2017 06:50

      Не согласен.
      Скорее всего имеется ввиду репутация и т.п. сейчас.


      1. ProRunner
        20.07.2017 07:29
        +2

        Да нет, думаю shador прав. Я then c than перепутал при переводе. Виталик говорил про «больше на кону в то время»


      1. alex_blank
        21.07.2017 19:29

        Нет, имеется в виду именно stake, в смысле денег. Это очень важно в свете перехода на алгоритм proof-of-stake (PoS), где хакер смог бы получить слишком много влияния благодаря украденным деньгам.


  1. FenixFly
    20.07.2017 07:15

    А можно запретить всей системе проводить операции с этим кошельком? Пусть хоть миллиард украдут, воспользоваться все равно не смогут.


    1. ProRunner
      20.07.2017 07:40
      +1

      То, о чем вы говорите, и есть хард-форк сети. Он и был произведен в случае со взломом The DAO, из-за чего произошёл раскол сети эфира на ETH и ETC.

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


    1. zagayevskiy
      20.07.2017 12:15
      -3

      долбодятлы сами виноваты, имхо


      1. ProRunner
        20.07.2017 14:19
        +2

        Кто? Разработчики кошелька или пользователи? Разработчики несомненно, но пострадали-то не они.

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


        1. powerman
          20.07.2017 17:04
          +1

          Ну, вообще-то банковские трояны именно этим и занимаются уже очень много лет. И да, долбодятлом, почему-то, при этом принято считать именно пострадавшего — не обновлял ОС, не поставил правильный антивирус, качал из инета игрушки на комп с ДБО, запускал аттачи к письмам, etc. Я не говорю, что случай из статьи идентичен, там всё-таки неясно, что могли предпринять пострадавшие для своей защиты (ну, кроме выделения средств на аудит безопасности этого кода), но определённые параллели между этими ситуациями определённо наблюдаются.


        1. rPman
          20.07.2017 19:31
          +1

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

          Токены — не децентрализованная криптовалюта, это цифровой актив, с централизованным контролем, а в случае с контрактами — еще и подверженный ошибкам реализации.

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


  1. kisskin
    20.07.2017 07:15
    +17

    ага, давайте каждый раз, как какой-то банк ограбят, будем новые деньги вводить.


    1. Enam
      20.07.2017 14:36

      Потребительские вклады в банках обычно застрахованы, как и личные средства банков.


      1. Germanets
        20.07.2017 15:36
        +1

        Пора создавать стартап — страхование кошельков криптовалюты)


        1. kisskin
          21.07.2017 20:52

          кстати, идея не плоха, вполне может и появится такое)


      1. kisskin
        21.07.2017 20:49

        1. Кто платит-то за эти страховки не задумывались? На санацию Банка Москвы потратили больше 100 млрд рублей, это 1тр из вашего кармана и моего и всех остальных и таких банков не 1 десяток. Не больно ли жирно содержать этих дармоедов, которые по факту просто воруют наши деньги?
        2. И про забалансовые вклады, я так понимаю, вы не слышали?

        Именно поэтому у криптовалют большое будущее — больше не будет ненужных вороватых «кровососов» и всяких сервисов типа робокассы с 20% комиссии за оплату.


  1. potan
    20.07.2017 07:47

    Ошибка была в коде конкретного контракта, или в коде кошелька?


    1. ProRunner
      20.07.2017 08:18
      +1

      Насколько я понимаю, хранилище кошелька представляет собой адрес смарт-контракта в сети эфира, поэтому можно сказать в коде всех смарт-контрактов, созданных с помощью Parity.


  1. yurisv3
    20.07.2017 08:16
    +17

    шо? никогда ж такого не было, и вот опять?!


    1. povargek
      20.07.2017 16:09

      Ну вот теперь есть


  1. amarao
    20.07.2017 11:58
    +3

    Супер умные но не супер надёжные контракты.


    1. ProRunner
      20.07.2017 15:17

      Ну ошибки разработчиков были и будут. То, что в текущей реализации очень легко наступить на грабли и потерять при этом все деньги — это да.


      С этой точки зрения мне нравится разрабатываемый в данный момент блокчейн eos, в котором при необходимости хардфорки можно провести быстро и безболезненно. Одна эфир уже есть и работает а eos пока существует только на бумаге (хотя разработчики уже собрали больше 200 млн. при ожидаемой капитализации под 2 миллиарда долларов).


      1. amarao
        20.07.2017 15:26
        +3

        Легко проводить хардфорки == центральная authority, способная «блокировать активы в случае обнаружения подозрительной активности и в связи с отказом предоставить форму УФН-БМ-42 бис 4 в отведённый законом срок в отдел борьбы с экономической активностью ЦБ УРФ».

        Нафиг-нефиг.


        1. ProRunner
          20.07.2017 15:39
          +1

          Не обязательно центральная authority. Возьмём steem/golos с его delegated proof of stake консенсусом. У них там уже под двадцать хардфорков безболезненно прошли. Участники сети выбирают "делегатов", которые решают/поддерживают работу сети.


          1. amarao
            20.07.2017 16:38

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


            1. ProRunner
              20.07.2017 16:53

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


              1. amarao
                20.07.2017 17:16
                +1

                «проаудировать» — это доказать, что в нём нет багов?

                (запасаюсь попкорном) Ну, расскажите мне про «проаудирование» кода указанных систем, после которых там не остаётся багов.

                Если остаются — возвращаемся к вопросу о том, что делать, если в коде хардфорка баг, который эксплуатируется.


                1. ProRunner
                  20.07.2017 20:07

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


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


                  Что сделают разработчики блокчейна / владельцы эфира? Они просто найдут новый способ консенсуса и напишут новый код, возращающий сеть в состояние до атаки (подобное и произошло с разделением eth/etc). То есть да, делается новый хард-форк, в данном случае изменяющий код "на самом высоком уровне". Но опять же, что proof of work что proof of stake изучены более-менее хорошо и с определенной долей уверенности можно утверждать что в них нет багов. Я же говорю про систему, которая позволит регулировать систему без вмешательства в код самого блокчейна.


                  1. amarao
                    20.07.2017 20:16
                    +2

                    Допустим, такой код найден. Злоумышленник цедит деньги и через ближайший обменник выводит их во что-то другое. Постепенно начинают расходиться слухи о том, что «воруют деньги». Курс начинает падать. Злоумышленник увеличивает «норму отбора», слухи становятся паническими, биржи начинают отказываться принимать валюту, злоумышленник сливает сколько может через оставшиеся биржи, после чего продаёт за сколько-то (другой валюты) уязвимость какому-нибудь zero-day трейдеру или security researcher'у.

                    После публикации баг исправляют, но…

                    С потерянными деньгами-то что делать? Отменять продажу на бирже? Биржи против. Делать хардфорк всех валют, в которые были выведены деньги? Может, сразу вселенную форкнуть?


                    1. ProRunner
                      20.07.2017 20:34

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


  1. andvgal
    20.07.2017 15:11
    +1

    Это и есть обратная сторона медали. Рано или поздно появятся регуляторы и тут. Будет возможность согласовывать блокировку, делать переводы активов без ключа, но с одобрения сети для возврата украденного, в т.ч. возможность восстановления доступа к активам при утрате ключей в частном случае. Таков естественный процесс развития любой системы.


    1. ProRunner
      20.07.2017 15:24
      +1

      Я, кстати, всеми руками за. Регуляторы не в смысле регулирующих органов государства, а в смысле регулирования изнутри сети (тот же консенсус DPoS).


      На текущий момент с криптовалютой очень просто отстрелить себе не только ногу, но и голову.


      1. kozyabka
        20.07.2017 15:46
        +3

        то есть, если ты всем не понравился на фотке профайла, то все могут решить у тебя бабла отжать?


        1. ProRunner
          20.07.2017 15:54

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


          1. bano-notit
            21.07.2017 02:24

            А это просто может случаться не так часто и не так публично, так что любой. У нас по идее тоже нельзя взятки давать, "кто же поверит и доверит что-то продажному чиновнику", но всё же есть у нас великое "не пойман — не вор", которые покрывает и вашу ситуацию, и ситуацию с чиновниками)


  1. Aquahawk
    20.07.2017 17:19

    биткоины то как скакнули


  1. Abyrvalgov
    20.07.2017 18:39
    +1

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

    1. Откуда брались сами кошельки, попавшие под атаку? Не мог же атакующий просто посылать запросы на рандомно, брутфорсом сгенерённые наборы символов — такой перебор занял бы тысячи лет, а не пару часов. Понятно, что тут нужен не приватный ключ, а некий публичный адрес, но всё-таки — откуда ему взяться, если человек сидит дома, примус починяет, а на кошельке живут себе эфирки?

    2. Как конкретно посылался вызов функции? В эфире можно послать ноль ETH на чужой кошелёк, если знаешь его адрес, а попутно прицепить вызов функции, который ещё и вызовется? Т.е. система не пересылает просто 0 eth с одного кошелька на кошелёк, она зачем-то ещё и пересылает произвольный код?


    1. MadJackal
      20.07.2017 18:55

      2. Можно, если кошелёк — смарт-контракт


    1. ProRunner
      20.07.2017 19:36
      +1

      1. Все адреса, с которых либо на которые отправлялись средства, попадают в блокчейн эфира. Блокчейн эфира можно посмотреть и в интернете, например на https://etherscan.io. Там же можно посмотреть весь текст смарт-контракта, если этот адрес — смарт контракт. Найти кошелек с определенным смарт-контрактом можно либо через сам блокчейн, либо, подозреваю, и через поисковые системы. К тому же деньги были выведены с определенных кошельков, используемых в ICO — злоумышленнику не нужно было их искать.


      2. Каждый может опубликовать в сети эфира смарт-контракт — текст программы, выполняющий определенные функции. То есть да, можно прицепить вызов функции, которая выполнится при переводе средств на данный кошелек (в том числе и с 0 эфира). Произвольный код не пересылается, выполняется код, уже определенный в смарт контракте. В данном случае в нём была ошибка, которая и привела к потере средств.


  1. SwVZFSf4fLt8NSZNfV87
    20.07.2017 18:51
    +3

    А какой децентрализации и надёжности можно говорить, если есть возможность отката транзакций.
    Неважно будут они её делать или нет, сама возможность уже подрывает всё доверие.

    Настоящая криптовалюта должна быть децентрализована, анонимна и без возможности отката.
    Что сделано, то должно сохраниться навсегда и никто не может это отменить.
    Иначе, в чём отличие от обыкновенных транзакций на сервере с одной БД, кроме супер крутого шифрования, как нам всем рассказывают. И зачем тогда майнинг?

    CDN с шифрованием, где все данные берутся с центрального сервера и проверяется их целостность. Но всегда можно сделать откат на центральном сервере.

    А уязвимости конкретных сервисов, которые хранят средства в этой криптовалюте касаются только их и их пользователей. Эти уязвимости не подрывают надёжность криптовалюты т.к. не она уязвима, а сервис, которому люди доверили свои кошельки.

    Безусловно кража огромного количества средств повлечёт изменение курса.
    Если подхватят СМИ, то будет новость про взлом криптовалюты и паника у пользователей.
    Но мне кажется стоит задуматься именно над возможностью отката, она и есть главный минус технологии.


  1. ruzhovt
    20.07.2017 19:52

    https://etherscan.io/address/0x1dba1131000664b884a1ba238464159892252d3a

    а этих пацанчиков теперь 85 млн баксов на одном акке.
    пора майнить приватный ключ к ихнему кошельку вместо коинов :)


    1. 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/


  1. Pavellog
    20.07.2017 20:11

    Странно почему не «русские хакеры».


  1. futureader
    20.07.2017 22:48
    +2

    Всегда думал что за любой валютой должна стоять хоть какая-то армия которая в случае необходимости докажет состоятельность этой валюты.


    1. Eddik
      21.07.2017 00:40

      Верно. Или хотя бы экономика.


      1. ProRunner
        21.07.2017 09:11
        +1

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


  1. TimsTims
    21.07.2017 00:50
    +1

    А о самом главном как-то не упомянули: вроде как, деньги «украли» белые шляпы, и они их обещали вернуть как только всё исправят. Поэтому хакеры хоть и хакнули, но лишь чтобы это не сделали другие.


    1. ProRunner
      21.07.2017 07:29

      Да вроде это понятно из определения "белых шляп". Да и написано же "Группа white hats смогла вывести эфира… для защиты средств", а в upd внизу дается ссылка на пост, где они объясняют, как будет проходить возврат денег.


  1. Eddik
    21.07.2017 00:53

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


    1. CherryPah
      21.07.2017 07:25

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

      Проходит полгода
      Упс, придется форкаться (или не форкаться) в зависимости от процента утекшего бабла


      1. Eddik
        21.07.2017 13:25
        +2

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


        1. Sklott
          24.07.2017 11:38

          Напомнило одну фентезийную книгу. Та любой закон можно было сделать «магическим», т.е. никто не смог бы его нарушить точно так же как закон природы, и… ни один закон так не обрабатывали, т.к. всегда кому-то, чаще всего как ни странно самому государству, законы надо нарушать…