Отфільтровано по " Crypto Security "

«Чорний липень» Parity: подробиці атаки і інструкція зі зламу гаманця

«Чорний липень» Parity: подробиці атаки і інструкція зі зламу гаманця
ефір

19 липня 2017 року Parity піддався хакерській атаці, в ході якої зловмисникам вдалося вкрасти 153,037 ефірів, що на той момент складало близько $ 30 мільйонів. Її назвали «другою найбільшою атакою в історії мережі Ethereum за кількістю вкраденого ефірів». Вразливість, що дозволила здійснити атаку, містилася в коді гаманця з мультипідписом, тому атака також відома як «MultiSig Hack». Взагалі, злочини в криптосвіті завдають дуже великої репутаційної шкоди технології, що розвивається. Про це ми писали в статтях:

Сантьяго Палладіно, дослідник з безпеки в компанії, що займається рішеннями для створення і управління смарт-контрактами, Zeppelin, коротко описав процес атаки: хакер відправив по дві транзакції в кожен потерпілий контракт. Перша з них, що містила виклик функції initWallet, забезпечувала йому виключне право на володіння гаманцем з мультипідписом, а друга дозволяла перевести все, що зберігається на цьому гаманці на потрібну адресу.

Далі, через пристрої MultiSig-гаманців Parity, гаманець перенаправляє всі виклики на інший контракт - контракт бібліотеки. Як пояснює Едуард Каріон, експерт з токеноміки, блокчейну і смарт-контрактів, саме в бібліотеці «реалізована вся функціональність», що дозволяє не писати окремий код для кожного гаманця: «Кожен окремий parity-гаманець був просто такою оболонкою, яка делегує всі виклики в основний контракт бібліотеки через delegatecall в його резервні функції», - пише Каріон.

При цьому суть механізму delegatecall полягає в тому, що він працює з даними самого гаманця - тобто застосовує функціональність бібліотеки (її код) до конкретного гаманця, його балансу і даних власника. Відповідно, всі викликані функції повинні бути загальнодоступними, тому метод initWallet, що відповідає за ініціалізацію (підготовку до використання) гаманця, був також загальнодоступним: «Передбачається, що метод буде викликатися тільки один раз під час створення контракту гаманця. Тобто я хочу завести новий гаманець, я відправляю в Ethereum транзакцію, де написано "Заведи новий гаманець, який посилається ось на цю бібліотеку", і автоматично в момент створення мого контракту, мого гаманця спрацьовує функція initWallet в бібліотеці, яка призначає мене в якості власника цього гаманця», - пише Каріон.

Однак жодних механізмів для перевірки того, що цей процес виконується тільки один раз, не було передбачено. Тобто, по суті, будь-який користувач міг запустити ініціалізацію (initWallet) повторно і стати власником гаманця, що і зробив хакер.

Parity визнали, що злам став можливим саме через цю помилку в коді: «Баг знаходився в двох вкрай чутливих функціях, розроблених для установки гаманців з мультипідписами в ПЗ гаманця Parity. Функції повинні були бути захищені так, щоб вони могли використовуватися тільки в одному випадку - при створенні контракту. Однак, вони були не повністю захищені, що дозволило хакеру довільно перевстановити параметри власника і використання», - пояснила команда Parity.

Після цього хакеру залишалося тільки викликати функцію execute, яка виконала переказ коштів на потрібний йому аккаунт.

На наступний день після атаки команда Parity опублікувала нову версію коду, але в ній також містилася вразливість, яка була активована 6 листопада. У цей день розробник під ніком devops199, не бувши членом команди і маючи порожній аккаунт на GitHub, написав, що «випадково вбив» контракт. Деякий час він брав участь в обговоренні під своїм постом, і на питання про те, навіщо він це зробив, devops199 відповів, що він «новачок в Ethereum» і «лише вивчає» систему.

Однак цьому вірять не всі. Засновник Thetta - фреймворка для створення DAO - вважає, що «ненавмисно» виконати всі ті кроки, що виконав devops199, неможливо: «@devops199 "випадково "викликав метод initWallet (), щоб заволодіти бібліотекою https://etherscan.io/tx/0x05f71e1b2cb4f03e547739db15d080fd30c989eda04d37ce6264c5686e0722c9, @ devops199 "випадково" викликав метод kill (), щоб вона самознищилася https://etherscan.io/tx/0x47f7cff7a5e671884629c93b368cb18f58a993f4b19c2a53a8662e3f1482f690 », - написав він. В обговоренні на GitHub він провів таку аналогію:

«1. Ви йдете і бачите, що двері банку відкриті
2. потім ви заходите всередину (виклик першого методу)
3. потім ви спалюєте всі гроші (виклик другого методу)
Чи повірить ФБР, що це було "ненавмисно"?»

Внутрішнє розслідування проекту Cappasity, який на момент атаки проводив токенсейл, також виявило навмисність дій хакера. На сьогодні аккаунт devops199 видалений.

Було також відзначено, що під час другої атаки проблема полягала в некоректній ініціалізації контракту бібліотеки, через що будь-який користувач міг стати його власником і знищити його.

В офіційному оголошенні команда Parity повідомила, що постраждали ті гаманці з мультипідписами, які були створені після 20 липня, тобто використовували модифікований після першого злому код: «На жаль, цей код містив ще одну вразливість... - він дозволяв перетворити контракт бібліотеки гаманця Parity в звичайний гаманець з мультипідписами і стати його власником, викликавши функцію initWallet, - написали Parity. - Користувач знищив код бібліотеки, що в свою чергу зробило всі контракти [гаманці] з мультипідписами невикористовуваними і заморозило кошти, оскільки їхня логіка (всі функції для зміни стану) перебувала всередині бібліотеки». В результаті власники цих гаманців втратили можливість виводити маркери. Замороженими виявилися 513,744 ефірів.

У грудні CEO Parity Ютта Штайнер обіцяла, що доступ до засобів буде відкритий після планового апргейду через 4-6 місяців, проте цього не сталося. Проблема так і не вирішена, а суперечки щодо способу повернення коштів викликали розкол в суспільстві Ethereum, в тому числі серед розробників: в лютому Йоіті Хіра покинув пост редактора коду EIP 867 - пропозиції щодо вдосконалення Ethereum, яке також торкалося способів повернення коштів.

А в кінці квітня, на зустрічі розробників Ethereum, суперечки розгорілися вже навколо іншої пропозиції - EIP 999: багато учасників зустрічі були впевнені, що прийняття EIP 999 спровокує розкол мережі, тобто відбудеться хардфорк, так як два основних клієнта Ethereum - Parity і Geth - дотримуються різних поглядів щодо цієї пропозиції: «Ми говоримо про одну й ту ж мережу і, по суті, починаємо міжплемінну війну. Я не думаю, що ми зможемо домовитися», - сказав провідний розробник Geth Петер Шілагій.

Сьогодні велика частина обговорень зводиться до листопадового заморожування коштів, оскільки - навмисним воно було чи ні - кошти не були викрадені: вони так і дражнять співтовариство, перебуваючи на тих самих адресах. Однак, джерело цієї «міжплемінної війни» - 19 липень 2017 року, коли було здійснен першу атаку: саме це призвело до необхідності міняти код, баг в якому навів до нового інциденту і - без великого перебільшення - сформував спільноту Ethereum в її сьогоднішньому вигляді.

У березні співзасновник проекту токенізованих ланцюжків поставок Nuclo Девон Уеслі відтворив код липневого злому Parity, і CryptoHacker дає адаптацію цього матеріалу. Оригінал передбачає, що читач має базові знання в програмуванні, а також в блокчейн-програмуванні і мові написання смарт-контрактів Ethereum - Solidity, тому адаптованій версії передує невеликий словник:

Консоль, або CLI (англ. Command line interface, інтерфейс командного рядка) - текстовий інтерфейс, в якому можна ввести команду на мові програмування (наприклад, JavaScript), і вона буде виконана. Для необізнаного користувача - це віконце з чорним екраном і рядками коду, але консольний інтерфейс може ніколи вам не зустрітися, так як сьогодні всі програми і додатки, націлені на широку аудиторію, мають красивий і зручний графічний інтерфейс - тобто картинки, кнопки та інші атрибути дизайну, що забезпечують інтуїтивну взаємодію.

init (скорочення від initialization) - система ініціалізації в ряді операційних систем, що відповідає за приведення програми або пристрою в стан готовності до використання. У контексті статті «initWallet» буде командою для ініціалізації гаманця.

Фреймворк, дослівно «каркас» - це ПЗ, що спрощує створення продуктів, наприклад, смарт-контрактів або децентралізованих додатків.

Резервна функція, або fallback function, в Solidity - це функція, яка виконується, коли при виклику до контракту невиявлений відповідний ідентифікатор. Наприклад, якщо код виглядає так: address.call (bytes4 (bytes32 (sha3 ( "thisShouldBeAFunction (uint, bytes32)"))), 1, "test"), то ідентифікатор - thisShouldBeAFunction. Віртуальна машина Ethereum (EVM) спробує викликати з контракту функцію з таким ідентифікатором. Якщо її не існує, то викликається резервна функція. У контексті статті йтиметься про резервну функцію з модифікатором «payable»: даний модифікатор означає, що функція може приймати ефір. У коді вона буде позначатися так:

функція

де msg.value позначає, скільки саме прийшло ефіру.

Функція і метод - це підпрограми, які викликаються основною програмою для виконання якихось дій. Являють собою фрагменти коду, які можуть працювати з вихідними даними і повертати результат своєї роботи у вигляді певного значення.

Менеджер пакетів - ПЗ для управління пакетами, тобто наборами файлів.

Середовище виконання - набір інструкцій, які виконуються для перекладу написаного програмістом коду в код, зрозумілий комп'ютеру (в даній статті - в код, зрозумілий віртуальній машині V8).

Адаптація матеріалу Medium

Баги в Solidity дорого обходяться, піддаючи ризику вас самих і багатьох інших, тому важливо вжити заходів обережності при написанні і розгортанні смарт-контрактів. Ми розглянемо один з таких багів, «експлойт для гаманця з мультипідписом», і напишемо код його спрощеного сценарію, використовуючи два смарт-контракти: контракт гаманця і контракт бібліотеки гаманця.

Примітки:

Передбачається, що у вас є базове розуміння технологій в основі блокчейну Ethereum і мови програмування для написання смарт-контрактів Solidity, який компілюється в байт-код EVM.

Я використовую Mac - вибачте, і я вас попередив.

NodeJS - Виконавча, що використовує JavaScript-движок V8, вам знадобиться версія 6.9.1 або пізніші.

Пакети NPM (менеджер пакетів, що входить до складу Node.js.):

NPM

Перший пакет, який ми встановлюємо, - Ganache, «Ethereum-клієнт на базі NodeJS для тестування і розробки». Ganache - це приватний блокчейн з власним генезисним блоком, який повністю повторює функціонал основного блокчейну Ethereum (використовується розробниками для тестування).

NodeJS

Другий пакет - Truffle - це фреймворк для тестування і розгортання, створений з метою полегшити для розробників розгортання і управління смарт-контрактами. Ми будемо використовувати цей фреймворк і консоль, яку він надає: та ж консоль, що в NodeJS, але з парою вбудованих додаткових пакетів.

Два контракти, які ми використовуємо, є спрощеними прикладами, а НЕ справжніми контрактами, на які була здійснена атака. Ці два приклади взяті з блогу «Hacking, Distributed», де дано відмінне докладне пояснення липневої атаки.

Починаємо:

Ми виконаємо кілька команд для скаффолдингу (в даному випадку «структуризації») нашого проекту.

скаффолдинг

Вищенаведені команди створюють нашу папку проекту і потім зберігають зміни, внесені в проект.

папка_проекту

Виконання цієї команди створить в проекті структуру каталогів, наведену нижче:

структура_каталогів контракт

У корені нашого поточного проекту файл з заголовком truffle.js (передостанній рядок на зображенні вище), помістіть цей фрагмент коду в даний файл і збережіть. Це конфігураційний файл - він вкаже інструментам truffle, з яким блокчейном їм працювати.

конфігураційний_файл

Ця команда створить файл package.json в нашому кореневому каталозі. Це дозволить нам встановити пакети з NPM сюди в кореневий каталог.

кореневий_каталог

Це класний, дуже корисний пакет. Це простий модуль для створення, управління і підписання Ethereum-транзакцій.

Запускаємо наш приватний блокчейн для тестування

У новому командному вікні виконуємо таку команду:

командне_вікно

Ця команда запустить абсолютно новий приватний тестовий блокчейн з власним генезисним блоком. Запускаючи блокчейн Ganache, ви отримуєте HD-гаманець (ієрархічно-детермінований гаманець, який має seed-фразу і послідовно генерує нескінченну кількість адрес, прив'язаних до цього гаманця). Цей гаманець матиме 10 акаунтів, прив'язаних до нього і доступних для використання.

Частина команди -u0 розблокує перший аккаунт, і ми зможемо створювати і підписувати транзакції.

транзакції

Коли команду буде виконано, ви побачите 10 акаунтів.

Розгортаємо наші контракти

Раніше ми створили файл contracts/WalletLibrary.sol. Тепер помістимо в нього цей фрагмент коду нашого контракту.

Це контракт, з яким можуть взаємодіяти інші контракти. Це не сам гаманець, і він не зберігає ніяких коштів. Він створений тільки для того, щоб контракти могли делегувати йому певний набір функціональності (через delegatecall). Він являє собою скорочену версію оригінального контракту, в якому була вразливість. Оригінального контракту більше не існує через іншу вразливість, яка його знищила (мова про листопадове заморожування коштів). Цей контракт має два методи, які можуть використовуватися будь-якими контрактами, як звертаються до нього - це метод виведення (withdraw) і зміни власника (changeOwner). Обидва ці методи можуть бути активовані тільки власником контракту, що має робити їх безпечними, правильно? Не зовсім. Подивимося, в чому їхня вразливість.

Контракт гаманця

Раніше ми створили файл contracts/Wallet.sol. Тепер помістимо в нього цей фрагмент коду контракту.

У цьому контракті багато чого відбувається. Оголошення перших двох змінних:

owner: Це власник контракту гаманця. Він задається параметром _owner (рядок 7 в наведеному фрагменті коду).

_walletLibrary: Це адреса контракту бібліотеки гаманця. Він потрібен нам, щоб ми знали, куди делегувати наші виклики.

Ми викликаємо функцію-конструктор Wallet (рядок 7) при розгортанні контракту. При виклику конструктора ми задаємо змінні owner і _walletLibrary. Конструктор задає змінну owner, перенаправляючи виклик контрактом WalletLibrary через опкод _walletLibrary.delegatecall (PARAMS).

Delegatecall

Вразливість була не тільки в контракті бібліотеки гаманця, але і в контракті самого гаманця, і вона була пов'язана з тим, як використовується DELEGATECALL в резервній функції контракту гаманця.

«Схоже на ідею CALLCODE (один з різновидів виклику до контракту бібліотеки для виконання її коду відповідно до певного контракту), за винятком того, що він передає відправника і вартість (кількість пересланого ефіру) від батьківської сутності до дочірньої, тобто виклик має того ж відправника і ту ж вартість, що і оригінальний виклик. Це означає, що контракт може зберігати і передавати інформацію, використовуючи msg.sender (дані про відправника) і msg.value (дані про кількість ефіру) свого батьківського контракту. Це добре для контрактів, які створюють контракти, але не повторюють додаткову інформацію, що економить газ. Див. коментарі до EIP 7». - Homestead Docs

DELEGATECALL не тільки поширює свої властивості на msg (повідомлення, передане системою), але і ділиться вмістом сховища тих контрактів, які здійснюють виклик. Це означає, що контракти, які отримують DELEGATECALL, можуть маніпулювати внутрішнім вмістом контрактів, які здійснюють виклик. Це не завжди погано, іноді нам саме це і потрібно (як в рядку 9), але також це може мати негативні наслідки.

Розгортання Truffle

Тут наш скрипт розгортання. Всього 10 рядків, і ми готові! Truffle - достатньо зручний інструмент, який робить за нас більшу частину роботи. Ми імпортуємо наші контракти бібліотеки гаманця і гаманця. Перший deployer (рядок 5-6) розгортає контракт бібліотеки гаманця. Другий (рядок 8) - контракт гаманця з двома параметрами: щойно розгорнутою адресою контракту бібліотеки і адресою власника контракту гаманця. Це лише невелика частина того, що відбувається під капотом.

Команда розгортання

У нас уже має бути відкрите консольне вікно з запущеним блокчейном Ganache. Тепер відкриємо нове консольне вікно і запустимо команду розгортання Truffle.

команда
розгортання

Після того, як ми запустили команду розгортання, ми побачимо висновок (результати обчислень) на зразок того, що ми бачимо нагорі. Ви можете отримати кілька попереджень від компілятора (програма, яка перетворює написаний програмістом код в код, зрозумілий комп'ютеру, у випадку Ethereum - перетворює Solidity в байт-код, зрозумілий EVM; може попереджати про потенційні проблеми в коді), які не порушать контракт , але ви повинні самостійно їх вивчити, тому що ви отримаєте важливу інформацію. Під попередженнями ми бачимо повідомлення про те, що контракти були успішно розгорнуті. Прямо над кожним ім'ям контракту стоїть хеш транзакції цього контракту, а поруч з ім'ям контракту - його адреса.

В даному випадку адреса контракту гаманця - 0x6f0147644dfbd1b335f6a5de432b4de566a8d69d, адреса бібліотеки - 0xdbcd830c1ec91a003f6475c63b4391ce73abe2af, але у вас вони будуть вже іншими.

Значення змінної _walletLibrary в контракті гаманця буде таким же, як і адреса контракту бібліотеки гаманця. Скопіюйте та збережіть де-небудь це значення - воно нам знадобиться для здійснення атаки.

Взаємодія з гаманцем:

Відкрийте третє консольне вікно і запустіть команду:

команда консоль

Виконання цієї команди приводить нас до NodeJS repl (цикл REPL, read-eval-print loop, «читання - обчислення - висновок», дозволяє запускати код покомандно і миттєво бачити результат його виконання), і Truffle надає нам доступ до двох глобальних змінних (змінні, які видно всій програмі і можуть використовуватися будь-якою ділянкою коду (на противагу локальним змінним)).

код

Ця команда бере тільки що розгорнутий контракт і вставляє його зразок в змінну wallet, щоб ми могли перевірити стан розгорнутого додатка. За підсумком ми побачимо об'єкт з безліччю властивостей:

команда

Цей об'єкт і є нашим контрактом гаманця. Він має двійковий інтерфейс додатків (ABI), байткод, опкоди Рантайм, методи контракту і іншу корисну інформацію.

контракт

У нас ця команда генерує таку адресу: 0x6ba7132c9cc09956785ff7de95b2d410858a94c2

Вищенаведена команда перевіряє, хто є поточним власником контракту, тобто хто його контролює.

гаманець

Ця команда генерує у нас таку адресу: 0x6ba7132c9cc09956785ff7de95b2d410858a94c2

Як ви бачите, адреса одна і та ж сама. Технічно ви володієте цим контрактом, тому що у вас є приватний ключ власника контракту. Але уявімо, що у вас його немає, як би ви тоді зламали цей контракт? Зараз з'ясуємо.

Атаки, вразливості

До теперішнього моменту ми не говорили докладно про атаку або вразливості обох контрактів. Давайте їх обговоримо. Ось список факторів, які привели до атаки:

  1. Довжина і складність контракту;
  2. Складні взаємодії між резервними функціями Solidity;
  3. Прозорість (публічний характер) функцій Solidity за замовчуванням;
  4. Механізм Delegatecall;
  5. Пересилання даних виклику.

У випадку з нашим контрактом, у гаманця є 3 способи виконати команду _walletLibrary.delegatecall (PARAMS). Але якщо два з певних дзвінків контролюються і поводяться, як того очікує розробник, то третій спосіб виконання delegatecall - резервна функція з модифікатором «payable». Ця функція пересилає дані в контракт бібліотеки. Тут і розсипаються очікування розробників. Програміст не може вплинути на те, що буде пересилати користувач.

делегація

Усередині методу withdraw в контракті гаманця ми виконуємо delegatecall. Фрагмент коду, наведений вище, передає цьому виклику два параметра. Перший - 4 байта з 256 байт - це оператор, який повертає результат хешування методу withdraw (uint), другий - це кількість, параметр, який передається методу withdraw (uint). Таким чином, delegatecall повинен викликати в контракті бібліотеки метод withdraw. Це те, чого ми очікуємо.

метод

Це перша вразливість. Коли хтось, власник чи ні, відправляє транзакцію на контракт нашого гаманця і намагається викликати функцію, якої не існує, то викликається резервна функція з модифікатором payable, яка приймає ефір за замовчуванням. Ця функція виконує delegatecall до контракту бібліотеки і направляє йому значення змінної msg.data. Потім буде перевірено, чи існує в контракті бібліотеки оригінальна функція, яку хотів викликати користувач. Тепер ви бачите атаку?

Друга вразливість пов'язана з тим, як був застосований метод контракту бібліотеки: initWallet (address).

функція

Функція initWallet (address) в контракті нашої бібліотеки незахищена:

  • вона не виконує перевірку, щоб подивитися, чи визначено вже власника контракту.
  • вона не містить модифікатор internal, який би наказував їй працювати тільки у власному сховищі контракту при вступі виклику, ретранслює дані (тобто вона є відкритою, публічною).

Комбінація двох цих вразливостей привела до MultiSig-атаки.

Комбінація

Атака по кроках:

  • хакер посилає транзакцію на контракт гаманця за допомогою методу initWallet (address)
  • контракт виконує перевірку, щоб подивитися, чи є такий метод, і виявляє, що його немає
  • функція з модифікатором payable викликана командою msg.data, яка була спрямована контрактом бібліотеки через delegatecall
  • бібліотека перевіряє, чи є в ній метод initWallet ()
  • вона знаходить метод і виконує його, як запрограмовано
  • метод initWallet () встановлює власника, так що хакер робить власником самого себе, вказавши свою адресу
  • тепер хакер може робити все, що захоче, з контрактом гаманця

Пам'ятайте, що коли ми використовуємо delegatecall, ми не тільки пересилаємо дані, але і повідомляємо бібліотеці, яке сховище використовувати, яке сховище відповідає контракту, який визиває. У нашому випадку викликаючий контракт - це гаманець, і він має змінну - owner, і ця змінна задається методом initWallet (address). Готово!

Як ця атака виглядає в коді?

Повертаючись до консолі Truffle, виконаємо кілька завдань, щоб здійснити атаку.

атак

Метод sha3 () хешує 'initWallet (address)' і повертає його у вигляді 256-байтного хешу, з якого ми беремо перші 4 байта, вони використовуються для ідентифікатора методу (method_id).

ідентифікатор

Ми приєднуємо 24 нулі попереду адреси хакера. Адреси в Ethereum складаються з 20 байт, параметри - з 32 байт, так що ми заповнюємо необхідні 12 байт нулями. У випадку з адресою хакера ми прибираємо 0x з його початку.

адреса

Коли ми перевіряємо змінну даних, ми бачимо значення, вказане вище. Перші 4 байта - ідентифікатор методу initWallet (address), а наступні 32 байта - це параметри, які передаються цим методом.

змінна

Тут ми задаємо параметри транзакції, необхідні для того, щоб відправити наші «дані атаки» на контракт гаманця.

параметри

Ми використовуємо пакет ethereumjs-tx, який ми встановили раніше.

пакет

Створюємо новий зразок транзакції.

зразок

Трансформуємо приватний ключ в буфер (область пам'яті для тимчасового зберігання даних, принцип роботи можна представити на прикладі звичайного буфера обміну). Відкриваємо консоль, на якій запущений блокчейн Ganache, і прокручуємо на самий верх. Ви виявите свій приватний ключ в списку приватних ключів. Ми використовуємо аккаунт номер два (виділений блакитним) і приватний ключ, що відповідає цьому аккаунту - другий в списку.

алгоритм ключі

Передаємо буфер приватного ключа методу .sign (KEY), щоб підписати транзакцію, яку ми створили. І транзакція готова.

буфер

Відсилаємо нашу хакерську транзакцію, щоб вона була оброблена (при емітаціі, якою є Ganache, етап обробки відсутній).

транзакція

Коли транзакція виконана, її хеш повернеться у вигляді, наведеному вище.

транзакція

Давайте перевіримо, як справи у нашого власника:

злам

Якщо подивитися на адресу власника, яку ви скопіювали раніше (0x6ba7132c9cc09956785ff7de95b2d410858a94c2), він буде відрізнятися. Тепер хакер контролює контракт гаманця і всі його кошти, і початковий власник не може нічого зробити.

Висновок

Це експлойт гаманця з мультипідписом в дії. Коротко - поєднання двох вразливостей дало можливість здійснити атаку. Функція гаманця, за замовчуванням приймаюча ефір і перенаправляюча дані, і метод контракту бібліотеки initWallet (address) виявилися не захищені. Розробники гаманців, взаємодіючих з контрактом бібліотеки, могли перевіряти значення змінної msg.data і дозволяти передачу тільки певних значень. Вони могли впровадити перевірки або модифікатори, щоб не допустити такої атаки. Але що зроблено - то зроблено, і контракти зламуються постійно. Команда Parity - це група дійсно розумних людей, так що це могло статися з кожним.

Фото: flickr.com
Обробка: Vinci

Злами і банкрутства у 2018

Злами і банкрутства у 2018
злам

З ростом популярності крипторинку ростуть і потенційні загрози для гравців на ньому. Зокрема, експерти відзначають, що почастішали випадки атак хакерів на криптовалютні торгові майданчики: за даними The Wall Street Journal, з початку 2018 року шахраями було вкрадено понад $ 800 мільйонів з п'яти криптобірж, що перевищує показники за будь-який інший рік. Чому шахраї вибирають саме криптобіржі і які наслідки цих атак?

Хронологія зломів у 2018 році

В цілому, з 2011 року на криптовалютні біржі, ICO і інші платформи, які працюють з цифровими валютами, шахраї здійснили 56 атак. Про це йдеться в аналізі фінансової консультаційної фірми Autonomous Research, згідно з яким учасники крипторинку за цей час зазнали втрат в розмірі понад $ 1.6 мільярда. При цьому за перші сім місяців 2018 року хакери змогли зламати п'ять торгових майданчиків, викравши токенів понад $ 800 мільйонів.

Січень

26 січня 2018 року Coincheck, одна з найбільших криптовалютних бірж в Японії, піддалася наймасштабнішій атаці на крипторинку. В результаті зламу хакери викрали 500 мільйонів токенів NEM на суму в $ 532 млн, що стало найбільшим пограбуванням в історії криптовалюти, навіть у порівнянні з зламом криптобіржі MtGox у 2014 році, який коштував платформі $ 480 мільйонів.

Причиною атаки стала вразливість в роботі Coincheck, а саме те, що криптовалюта користувачів зберігалися на гарячих гаманцях, де активи завжди доступні онлайн. Також біржа не використовувала механізм множинного підпису, який міг би захистити кошти клієнтів біржі. В інтерв'ю Bloomberg тепер уже колишній керівник Coincheck Коїтіро Вада також зазначив:

«Зараз ми розуміємо, що та кількість співробітників, яка працювала над внутрішніми перевірками, менеджментом та оцінкою ризиків, була недостатньою. Ми прагнули до зростання, проте наші зусилля в підсумку привели до даної ситуації».

Тим не менше, 28 січня представники Coincheck заявили про готовність компанії відшкодувати збитки користувачів. А в квітні криптобіржа Coincheck перейшла під контроль компанії Monex Group, яка викупила торговельну площадку за 3.6 мільярди ієн, або $ 34 мільйони. Також за умовами угоди всі представники керівництва Coincheck, включаючи Коїтіро Вада, повинні були покинути свої пости.

Лютий

8 лютого стало відомо про злам італійської криптовалютної біржі BitGrail, в ході якого було викрадено 17 мільйонів токенів Nano на суму в понад $ 170 мільйонів. Примітно, що двома тижнями раніше криптобіржа вже призупинила введення і виведення Nano, викликавши підозри користувачів.

Згідно з офіційною заявою біржі, внутрішня перевірка показала на те, що злам стався в результаті численних «неавторизованих транзакцій» з Nano. CEO біржі Франческо «The Bomber» Фіра повідомив про якийсь баг в протоколі Nano, що, на його думку, і стало причиною зламу. У відповідь команда Nano звинуватила біржу в поширенні недостовірної інформації, зазначивши наявність істотних вразливостей в коді системи безпеки торгової платформи. Більш того, про проблеми при виведенні коштів було відомо ще до зламу, коли якийсь користувач виявив, що розміщуючи два ордери можна було отримати подвійний баланс токенів на свій гаманець. У зв'язку з чим з'явилася думка, що злам був справою рук керівництва майданчика, яке користувачі звинувачують в шахрайстві, халатності і крадіжці коштів. Це підтвердила і команда розробників Nano, написавши у своєму блозі:

«У нас є всі підстави вважати, що Фіра вводив в оману команду Nano Core і спільноту щодо платоспроможності біржі BitGrail протягом значного періоду часу».

На початку травня біржа оголосила себе банкрутом, а 24 травня суд Флоренції виніс рішення, згідно з яким біржа повинна була припинити роботу, і активи, що залишилися в її розпорядженні, повинні бути передані під зовнішнє управління.

Червень

10 червня керівництво сьомої найбільшої південнокорейської криптовалютної біржі Coinrail повідомило про злам, в результаті якого було викрадено $ 40 мільйонів. За даними біржі, метою шахраїв стали різні маркери стандарту ERC-20, зокрема токени NPXS проекту Pundi X, ATC проекту Aston і маркери NPER однойменного проекту. Також, за оцінкою команди Pundi X, хакери викрали 1927 ефірів і 831 мільйон токенів DENT, а також $ 1.1 мільйона в токенах TRX.

Як і у випадку з Coincheck, токени були вкрадені з облікових записів користувачів, чиї кошти зберігалися на біржі. В результаті керівництво Coinrail прийняло рішення перемістити криптовалютні активи на холодні гаманці на час розслідування крадіжки.

При цьому місцеве видання Chosun опублікувало інформацію про підозрілі транзакції, що проводяться біржею, в результаті яких деякі банки запідозрили її у відмиванні коштів:

«У лютому 2018 року кілька банків, які працювали з Coinrail, виявили підозрілі транзакції, імовірно спрямовані на відмивання грошей. У квітні деякі банки без пояснення причин припинили будь-яку співпрацю з біржею».

Через півтора тижні стало відомо про атаку на іншу відому південнокорейську торговельну платформу - Bithumb. 20 червня третя найбільша криптобіржа в світі підтвердила інформацію про злам, який відбувся днем ​​раніше. Представники майданчика повідомили, що шахраям вдалося викрасти 35 мільярдів південнокорейських вон, що складає приблизно $ 31 млн. При цьому представники не уточнили, які саме криптовалюти були викрадені:

Ми б хотіли поділитися з вами інформацією про інцидент, що стався 20 червня і повідомити про кроки, які ми збираємося зробити, щоб захистити ваші кошти в майбутньому на Bithumb.

За даними CoinDesk Korea, за кілька днів до атаки компанія провела перевірку систем безпеки на своїх серверах, оскільки було відзначено збільшену кількість випадків спроб несанкціонованого доступу. У той же час кошти користувачів були переміщені на холодні гаманці. На даний момент Корейське агентство інтернет-безпеки (KISA) проводить перевірку, щоб виявити причини зламу.

Доброю новиною став той факт, що всього через 9 днів після зламу майданчика вдалося повернути близько $ 14 мільйонів завдяки співпраці з іншими торговими платформами. За заявою компанії, інші втрачені кошти користувачів будуть відшкодовані.

Липень

Остання атака відбулася 9 липня і була здійснена на децентралізовану швейцарську криптобіржу Bancor, яка дозволяє користувачам торгувати через смарт контракти, в той час як більшість інших криптовалютних торгових майданчиків пропонує однорангову торгівлю. Про злам стало відомо з офіційного твіттера Bancor:

Сьогодні вранці Bancor піддалася зламу. Жоден гаманець користувача не постраждав. В рамках розслідування ми переходимо в режим maintenance і повідомимо більше інформації найближчим часом. Скоро ми повернемося в режим онлайн.

У більш детальній заяві було зазначено, що зловмисникам вдалося викрасти понад 24 000 ефірів на суму приблизно в $ 12 мільйонів, токени NPXS на суму в $ 1 мільйон і токенів BNT на $ 10 мільйонів. В цілому, криптобіржа понесла збиток у розмірі понад $ 23 мільйони.

При цьому вкрадені BNT в рамках протоколу Bancor вдалося заморозити завдяки запровадженій функції, націленої на боротьбу з подібними випадками зламів і крадіжок. Проте інші криптовалюти і токени залишаються в руках шахраїв, незважаючи на те, що керівництво Bancor активно працює з іншими майданчиками, щоб відстежити рух вкрадених коштів і запобігти їх ліквідації. Представники криптобіржі заявили, що будуть продовжувати публікувати інформацію про розслідування в каналі Telegram і в твіттері.

На завершення

На думку експертів, причиною зростання числа хакерських атак на криптовалютні майданчики можна вважати занадто стрімкий розвиток даного сектору. В результаті існуючі системи безпеки не встигають за темпами зростання, вказуючи на суттєві вразливості в їх роботі і необхідність внести правки в системи реагування навіть провідних криптовалютних торгових майданчиків на ринку.

Фото: flickr.com
Обробка: Vinci

Фішинг криптохолдерів, трейдерів, ICO і бірж - як не попастися на гачок

Фішинг криптохолдерів, трейдерів, ICO і бірж - як не попастися на гачок
злодій

Криптоспільнота вже змирилася з тим, що всередині неї склалося інше ком'юніті - шахраїв, фішерів, ICO-скамерів, здирників і т. д. CryptoHacker говорить про основні методи фішингу клієнтів і інструменти боротьби з ними.

Фішинг-сайти

У ті приємні часи, коли можна було рекламуватися в Google Adwords і іншій контекстній рекламі, буквально у кожного сайту ICO був свій клон.

Проблема. У деяких клієнтів Hacken було до 30 фейкових сайтів, які реєструвалися один за одним і пропадали тільки після втручання спеціалістів. Аукціони на контекстну рекламу по бренду клієнта перевалювали за $100 за клік.

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

Одним з ефективних (якщо не найефективніших) способів захисту користувачів є внесення оригінального домену в білий список MetaMask, а всіх фейкових доменів в чорний список того ж сервісу. Всіх вкладників наполегливо, по кілька разів на день, вмовляйте встановити плагін від MetaMask, а нові фішингові домени і гаманці вносьте в блок-лист щогодини.

Фейкові Twitter-акаунти і AirDrop-кампанії

Останнім часом деякі маркетологи починають свої доповіді з фрази «люди тупіють», і найбільш наочний прояв цієї тези можна спостерігати в світі фейкових AirDrop-кампаній і бездумних «репостів за їжу». Слід додати, що «люди тупіють, сподіваючись на халяву». Мабуть, фішери і адекватні люди помітили, що стрічки в соціальних мережах іноді перетворюються в простирадло розіграшів «виграй дурницю/нісенітницю/дурниці за репост прямо тут і зараз».

Все те ж саме, що твориться в звичайному світі, мігрує в крипту. Раніше спам поширювали в стилі «перепиши цей лист і відправ трьом людям, і тобі буде щастя», пізніше це еволюціонувало в «перейшли це SMS і поповни три номери з чарівним балансом, який скине тобі грошей у відповідь», далі «підстав свій пейпел- гаманець вгору і перейшли це трьом людям, попередньо поповнивши три гаманця», ну і тепер «зроби репост, вкажи свій гаманець, відправ нам 1 ETH, і ми надішлемо тобі 1000 щіткоінів». Це нагадує історію «мені повернули мій iPhone 6, але я вже купив собі сьомий, тому віддам його випадковій людині, яка зробила репост цього запису»?

Давайте наочно: ось неповний список вже заблокованих фішингових кампаній в Twitter, які нібито роздавали монети від імені компанії Hacken:

Tweets by Hackven_io
Tweets by Hacken_ibo
Tweets by Hacken_ioo
Tweets by Hacken_rio
Tweets by Hacken_ixo
Tweets by Hacken_yio
Tweets by Hackezn_io
Tweets by Hackebn_io
Tweets by Hackens_io
twitter.com/Hackedn_io/
Tweets by Hakken_io
twitter.com/Hackqen_io/
twitter.com/Hackxen_io/
Tweets by Hacken_ieo
Tweets by Hacyken_rio
twitter.com/Hackens_lo/
twitter.com/Hacken__lo/
twitter.com/SneddonNoland/
twitter.com/prokhorov6206/

Найцікавіше, що люди самі бездумно розповсюджують подібну інформацію.

Крім цього, стало модним тегати популярне ICO в соцмережах Twitter, Facebook або навіть Instagram і розповідати про GiveAway токенів, що залишилися. Всім, хто тегав, не сильно пощастило, і вони потрапили під каток антифішинг-машини, проте багато ICO не реагують на подібні кампанії, і даремно. Ось список сайтів, «які роздавали» токени (як ви розумієте, всі вони заблоковані).

ethereum.org-giveaway.live
ethereumpomo.online
giveaway.ethereunn.org
eth-airdrop.online
ethtogive.com
manytokens.com

Спосіб захисту: блокувати фейкові акаунти скаргами, проводити airdrop-кампанію тільки на своєму домені (піддомені) і попереджати, що поширення будь-яких інших посилань на ресурси третіх осіб (google form) призведе до блокування облікового запису і скарг на незаконне використання бренду третіми особами. Користувачам же необхідно пам'ятати: безкоштовний сир буває тільки в мишоловці. Роздача монет може проходити тільки в рамках рекламної кампанії або з маркетинговими цілями, але необхідно перевіряти подібну інформацію на офіційних ресурсах проекту.

Telegram-фішинг, фейки - наше все, або коли анонімність на твоєму боці

Питання про те, як боротися з фішингом в Telegram, - головний біль кожного популярного ICO. Вступивши до групи популярного токенсейла, можна відразу отримати до десяти особистих повідомлень «від адміністратора» з пропозицією купити токени. Незважаючи на те що адміни великих проектів регулярно чистять групу від спаму і маячних повідомлень, на сьогоднішній день цього вже недостатньо, бо фішери, скамери та інші шахраї пишуть людям безпосередньо.

Що робити з фішингом в Telegram?

Спосіб захисту: ви можете використовувати Hacken Antispam/AntiPhishing бота, який раз у певний період часу проходиться по всьому списку користувачів і робить такі речі:

  1. Порівнює всі аватари (фото) користувачів з аватарами (фото) адміністраторів і показує реальним адміністраторам потенційних фішерів, які можуть видавати себе за адміністратора.
  2. Порівнює всі нікнейми, імена і статуси користувачів на предмет схожості з офіційними адмінами, брендом і т. д. І показує реальним адміністраторам потенційних фішерів, які можуть видавати себе за адміністратора.
  3. Банить вищевказаних осіб без жалю.
  4. Видаляє користувачів з нульовою активністю, які не перевіряли чат більше 30 днів (на ваш розсуд).
  5. Фільтрує всі посилання і гаманці, які відправляють в чат.
  6. Фільтрує всі «переслані» повідомлення і картинки, так як це дуже популярний спосіб недобросовісної реклами в чужих каналах.
  7. Надсилає ручні/автоматичні репорти (скарги) на тих, хто порушує вищевказані пункти.

Простим користувачам рекомендуємо не купувати монети з рук в чатах або в неперевірених каналах. Адмінам варто писати самостійно і розуміти, що вони навряд чи будуть пропонувати вам купити щось «позакасою» або за неофіційним посиланням, що веде на дивний сайт.

Блокування фейків в Telegram - дуже складне питання, що вимагає значної кількості часу і певних знань в сфері юриспруденції. Для того, щоб заблокувати користувача, вам потрібно буде дуже чітко описати, що саме він порушує згідно з правилами месенджера або міжнародних законів.

Фото: flickr.com
Обробка: Vinci

«50 відтінків» скаму на ринку криптовалют

«50 відтінків» скаму на ринку криптовалют
Скам

CryptoHacker розповідає про ознаки, що вказують на те, що той чи інший ICO-проект може бути скамом.

Скам (scam - від англ. «Афера, шахрайство») - це навмисний умисел або шахрайство, і стосовно ICO це найчастіше означає викрадення коштів його вкладників. Як мінімум - під скамом можуть мати на увазі також неякісний або потенційно небезпечний ICO-проект, який обіцяє його бекерам втрату всіх вкладених ними коштів або іншими проблемами.

У свою чергу скамер - це інвестиційний агент, який з будь-якої причини припинив виконувати фінансові зобов'язання перед своїми інвесторами. Найчастіше термін «скам» широко використовується серед інвесторів різних хайпів і пірамід. Далі ми будемо розглядати і класифікувати це явище стосовно тільки до криптоіндустрії.

Для кращого розуміння цього феномена давайте виділимо критерії, які розбивають це негативне явище на три великих різнорідних групи:

  • навмисні
  • ненавмисні
  • маніпулятивні

Навмисний скам

Найпримітивніший варіант - це явно злочинний задум, коли люди проводять ICO, спочатку маючи намір викрасти кошти вкладників і «сховатися з ними в цифрових нетрях інтернету».

Вчимося самостійно виявляти проекти першого типу - ось список зовнішніх критеріїв, які повинні насторожувати будь-якого потенційного інвестора проекту:

  1. Наявність анонімних учасників в проекті є неприпустимим.
  2. Проблема «випадкових людей». Наприклад, у проекті страхування повинні бути профільні фахівці з цієї галузі і т.д .
  3. Відсутність авторитетних едвайзерів.
  4. Відсутність ескроу-агента або ескроу-схеми в проекті.
  5. Наявність схем додаткової емісії токенів (немає явних обмежень по емісії).
  6. Відсутність софткапа і/або хардкапа.
  7. Відсутність MVP.
  8. Відсутність зворотного зв'язку і особистої присутності фаундера на тематичних конференціях, відсутність можливості особистого контакту з командою та лідерами проекту.
  9. Виправлення принципових моментів в whitepaper заднім числом.
  10. Використання чужих медіа-матеріалів, копіювання (крадіжка) чужих текстів і концепцій, плагіат.

Наведемо типовий історичний приклад: Confido. Після успішного проведення цього ICO, всі офіційні акаунти і сайт проекту були закриті. Засновники зникли, інформація про їх, зазначена раніше, - виявилася помилковою.

Ненавмисний скам

Як правило, в цьому типі ICO самі фаундери є щирими жертвами своєї власної амбітності або віри в нездійсненні і фантастичні ідеї. Це досить поширена група.

Вчимося самостійно виявляти проекти другого типу - ось список зовнішніх критеріїв, які повинні насторожувати будь-якого потенційного інвестора проекту:

  1. Відсутність хоча б мінімального тестування нової революційної моделі на користувачах, відсутність MVP.
  2. Різке неприйняття аргументованої критики, упертий фанатизм, погрози у відповідь.
  3. Перевантаження проекту складністю, витіюваті концепції (щоб зрозуміти суть проекту, потрібно багато разів перечитувати його опис).
  4. Відсутність незалежної експертизи, а також ігнорування подібних експертиз, якщо вони є.
  5. Наявність в проекті безпрецедентної або унікальної для галузі ідеї-фікс а-ля «вічний двигун».
  6. Відсутність детальної карти розвитку проекту.
  7. Гіпетрофований розмір бюджету, без будь-яких серйозних обґрунтувань заявлених цифр.

Дуже важлива наявність ретельно пропрацьованого плану, фінансової моделі і термінів реалізації проекту, особливо для великих і складних проектів. В якості типового проблемного прикладу хочеться привести ICO проекту Comsa (2017 рік), який зібрав $ 92,6 млн. Офіційний план розвитку проекту виглядав ось так:

Comsa

Зараз же, коли ICO вже давно завершене, план розвитку проекту і зовсім скорочений до 1 пункту - ця дорожня карта «гідна» зібраних $ 92 мільйонів? Якщо просіяти через сито вищенаведених критеріїв, то короткий аналіз для Comsa виглядає приблизно так:

  1. Взагалі немає плану розвитку.
  2. Аноніми в команді.
  3. 45% токенів команда розподіляє на свої потреби.
  4. Немає прототипу і навіть логічної схеми майбутнього проекту.
  5. Технічна нісенітниця: збираються використовувати відразу три блокчейни: Mijin, NEM, Ethereum (і навіть може бути щось ще).
  6. Цинічний копіпаст тексту в свій whitepaper з інших джерел.

Ще один приклад ігнорування думки незалежних експертів - IOTA, яка створила свою власну криптографію «на коліні».

Лабораторія цифрових валют MIT опублікувала аудит коду IOTA, висновок: численні вразливості в самопальній криптографії і принципові помилки в коді. Проект був змушений зробити екстрений хардфорк, наспіх залатавши розкриті фундаментальні проблеми. Потім послідувала критика з боку лідерів Ethereum Foundation. Було ще кілька подібних досліджень, але особливо запам'ятався останній інцидент, коли Університетський коледж Лондона попросив крипто-ком'юніті оголосити IOTA бойкот через потік погроз судом на свою адресу (у відповідь на публікацію чергової вразливості Curl, яка потенційно загрожує крадіжкою коштів). Погрози вченим, згідно опублікованого листування, посилав глава фонду IOTA.

IOTA - це претендент в скамери другого рівня, пов'язаний з упертим ігноруванням незалежних досліджень і думок вченого співтовариства щодо хронічних проблем всередині своєї технології.

Інша характерна риса проектів другого типу - це «фічерізм», перевантаження проекту невиправданою складністю з метою справити враження на інвесторів, що згодом робить його нежиттєздатним.

Маніпулятивний скам

Девіз саме цього типу скамів - це маніпуляція і напівправда. Головна відмінність від другої групи - проект може бути сам по собі і цілком робочий, але для його просування постійно використовуються якісь надумані, яскраві затягаючі образи і характеристики, які не мають до нього відношення.

карусель

Вчимося самостійно виявляти проекти третього типу - ось список зовнішніх критеріїв, які повинні насторожувати будь-якого потенційного інвестора проекту:

  1. Використання («утилізація») яскравих образів в своїх цілях, наприклад, золота.
  2. Вперте констатування того, чого у проекту немає (і не було).
  3. Створення дуже складних бонусних схем, реферальних програм, різних MLM-схем просування.
  4. Гра на слабкостях людини і гіпертрофія обіцянок. Наприклад, обіцянка гарантованого прибутку або швидкого вирішення всіх проблем нашої цивілізації.

Найбільш характерно для цього типу ICO - використання шейхів або злитків золота в рекламі, спільних фотографій з братами Вінклвос, великих ефектних цифр, хитромудрих схем зворотного викупу та гарантованого прибутку - все це повинно заздалегідь насторожувати.

Типовий приклад, з уже відомою нам IOTA. Просто можна порівняти наступних два твердження, щоб зрозуміти, як працює третій тип проектів:

  • Жоден з виробників домашньої електроніки (станом на 2017 рік) поки не погодився співпрацювати, хоча IOTA докладає титанічних зусиль для того, щоб привернути до себе «залізних» вендорів.
  • Незважаючи на це, всюди в рекламі стверджується, що у 2020 році до IOTA буде підключено 50 мільярдів пристроїв.

Попереджений значить озброєний

Безумовно, іноді деякі «гібридні» скам-проекти можуть поєднувати в собі властивості різних типів проектів, але найчастіше - вони дотримуються якоїсь однієї лінії поведінки, тоді їх можна чітко віднести до однієї з 3 описаних вище груп.

На закінчення ще раз нагадаємо про «ефект чорного лебедя» стосовно ICO - ніхто заздалегідь не може точно знати і стверджувати, що якийсь проект - це однозначний скам (це стосується і наведених вище прикладів, які носять виключно ілюстративний характер і не містять ніякого звинувачення в шахрайстві). Але ми озброїли вас вичерпним списком критеріїв для самостійного розпізнавання всіх типових категорій скамів, щоб ви як мінімум могли відкинути найбільш небезпечні варіанти для інвестування в ICO.

Фото: flickr.com
Обробка: Vinci

Життя після хакерських атак: історії зламаних криптовалютних бірж

Життя після хакерських атак: історії зламаних криптовалютних бірж
злодій

Більше 980 000 - саме стільки біткоінів було викрадено хакерами під час атак на криптовалютні біржі. Шахраї крадуть і альткоіни: втрати монет Bitcoin Cash, Litecoin, Nem і інших, постійно зростають.

Навички та знання злочинців поліпшуються, а методи, за допомогою яких відбуваються крадіжки, стають ще більш витонченими. Повернути вкрадену криптовалюту досить важко, адже серед власників бірж виявляються несумлінні фахівці, які самі беруть участь в махінаціях на власних крипто-фірмах. Тому кожному користувачу перед тим, як почати вкладати гроші, варто ознайомитися з історією безпеки компаній.

Перша атака

У жовтні 2013 року був зафіксований перший випадок шахрайства, пов'язаний з криптовалютами і інтернет-майданчиком. Silk Road, яка перебуває в зоні .onion анонімної мережі Tor, можна назвати альтернативою eBay або Amazon для продажу нелегальних товарів, таких як наркотики, зброя, порнографія. Крім того, деякі користувачі на Silk Road зберігали свої криптомонети. Всі платіжні операції здійснювалися в біткоінах, за два роки існування сайту (2011-2013) сумарний обсяг угод склав 9.5 мільйона BTC.

Цією компанією зацікавилися в ФБР: у 2015 році засновника фірми Ульіма Росса Ульбріхта засудили до довічного ув'язнення за наркоторгівлю, хакерскі атаки і змову у відмиванні грошей, а саме біткоінів. Цей злочин поклав початок шахрайству на криптобіржах.

Найбільші зломи бірж

Через рік після закриття Silk Road стався ряд атак на MtGox. Одна з найпопулярніших криптовалютних бірж (у 2013 році 47% транзакцій в мережі Bitcoin проводилися через цей майданчик) втратила 850 000 BTC, що на даний момент є рекордною сумою.

Історія з викраденням монет почалася 7 років тому, коли шляхом копіювання файлу wallet.dat були вкрадені приватні ключі ключа MtGox. Тоді хакери отримали доступ до великої кількості біткоінів, стали контролювати введення і виведення коштів, а також депозити, що надходять на біржу. За версією американського слідства, протягом декількох років за допомогою скомпрометованих ключів, шахраї спустошували рахунки і переводили всі монети на гаманці, які належали Олександру Віннику - його називають технічним фахівцем російської криптобіржі BTC-E, хоча, представники самого інтернет-майданчика заперечують зв'язок з Вінником. На даний момент ведеться розслідування.

У лютому 2014 року MtGox зупинила торги, коли виконавчий директор Марк Каперл, проти якого японський суд завів кримінальну справу за статтями, пов'язаними з шахрайством і відмиванням грошей, знову заявив про безперервні атаки хакерів і крадіжки біткоінів. Але, згідно звіту, який вийшов через рік після закриття, криптовалюта була вкрадена у 2011 році. Для відшкодування збитків біржа продала біткоіни і Bitcoin Cash на суму $ 406.6 мільйони. У травні 2018 року попечитель MtGox Нобуаки Кобаяші перевів з адреси банкрута 8200 BTC, що чинило тиск на курс біткоіна - він знизився на 6.5%.

Хакерскі атаки не обійшли стороною і іншу значущу криптовалютну біржу - Bitfinex. Гонконгська компанія позиціонувала себе як найнадійніша і недоступна для шахраїв біржа, де для кожного клієнта підбираються гаманці з багатозначними ідентифікаторами. Але на ділі виявилася все набагато гірше. У серпні 2016 року кіберзлочинці викрали 120 000 BTC, або близько $72 мільйонів за курсом на той період часу. Основний витік коштів стався через процесинговий сервіс BitGo, з яким співпрацювала Bitfinex. Через місяць біржа почала виплачувати борги за допомогою випущених токенов BFX і вже в квітні 2017 року погасила всі заборгованості перед інвесторами.

На даний момент Bitfinex активно працює, входить в ТОП-10 кращих світових криптовалютних бірж, але іноді піддається різним атакам, що змушує багатьох експертів засумніватися в чесності компанії.

Ще один великий злам стався на провідній японської криптобіржі CoinCheck. Хакери, які перебували за межами країни, заразили внутрішню мережу торгового майданчика вірусом, який був переданий з допомогою пошти і викрав приватні ключі. У підсумку, в січні 2018 роки було викрадено 523 мільйони монет NEM на суму $533 мільйони за курсом на момент крадіжки. Інцидент стався через зневажливе ставлення до зберігання даної криптовалюти, тому що біржа не використовувала смарт-контракти з мультипідписом, і всі коіни зберігалися на одному гаманці.

Через два місяці після хакерської атаки, керівництво CoinCheck почало виплати 260 000 постраждалим клієнтам біржі. За кожен вкрадений NEM було запропоновано 88.549 японських ієн ($0.83). Після масштабного злому біржа увійшла до складу онлайн-брокера Monex Inc. Тепер, як заявив виконавчий директор Оки Мацумото, компанія планує вийти на американський ринок і завоювати довіру у більшої кількості користувачів.

Атака від керівництва

У липні 2014 року зловмисник під ніком Lucky7Coin ввів троянську програму в код Cryptsy (сайт не працює) - біржу, яка працювала з багатьма криптовалютами, і отримав доступ до ключів Bitcoin - викрадено 13 000, і Litecoin - викрадено 300 000. Адміністратори біржі були знайомі з шахраєм. За два місяці до пограбування зловмисник прислав лист, де хакер представився Джеком і доповів, що колишній власник нікнейма помер. Після атаки, власника компанії Пола Вернона звинуватили в крадіжці 11 000 BTC і знищенні доказів під час вчинення незаконних дій. Клієнти Cryptcy вважають, що валюта могла відмиватися через іншу криптобіржу - Coinbase. У підсумку, Окружний суд Південного округу Флориди зобов'язав Вернона виплатити клієнтам $8.2 мільйона.

маска

Другий випадок, який був пов'язаний з керівником біржі, стався в британській MintPal (сайт не працює). Її вважали одним з найкращих торгових майданчиків до того моменту, поки восени 2014 року не змінилося керівництво. Компанія була продана виконавчому директору Moopay Райану Кеннеді, відомому під псевдонімом Алекс Грін. Він під час внутрішніх робіт вкрав 3894 BTC і збанкрутував біржу. Примітно, що кількома місяцями пізніше, після виведення коштів, Кеннеді засудили до 11 років в'язниці за згвалтування і, незважаючи на те, що британська поліція розслідувала справу за статтею шахрайства, у вироку був відсутній пункт про крадіжку $1.5 мільйона в біткоінах.

Понад $170 мільйонів у 2018 році було викрадено у італійської криптовалютної біржі Bitgrail. За словами власника Франческо Фірано, який відомий під ніком «The Bomber», в результаті «неавторизованих транзакцій» з рахунків вивели 17 мільйонів XRB (Nano/RaiBlock). Представники Nano спростували цю інформацію і заявили, що помилок не було. Варто відзначити, що інші маркери, що зберігаються на біржі, не постраждали. Після атаки Bitgrail оголосила себе банкрутом.

Винні співробітники

Людський фактор є однією з основних причин, за якими виникають атаки. Першу в Європі ліцензовану біржу криптовалют Bitstamp, яка регулюється Люксембурзькою наглядовою комісією в сфері фінансів (CSSF), зламали в січні 2015 року. Хакери відправили шкідливий файл на внутрішню пошту співробітників. Один із системних адміністраторів знехтував правилом безпеки №1 - не відкривати файли від незнайомих людей, і перейшов по посиланню на пристрої, який має доступ до біткоін-гаманця біржі. В результаті було викрадено 19 000 BTC, або близько $5100 за курсом на період крадіжки.

Після атаки біржа відновила свою діяльність за допомогою переказу 98% активів на холодне зберігання, і учасники ринку знову почали довіряти Bitstamp. У грудні минулого року засновник Ethereum перевів на біржу 30 000 ETH. Але, не дивлячись на їхні дії щодо поліпшення роботи, користувачі скаржаться на довгу перевірку верифікації.

Працівники біржі можуть користуватися своїм службовим становищем і красти криптовалюти. Індійська біржа Coinsecure (сайт не працює) в квітні 2018 роки втратила 438 BTC, або $3.5 мільйона за курсом на квітень. Власники компанії припускають, що злом здійснив керівник відділу безпеки біржі, коли витягував Bitcoin Gold, на співробітника вже подали позов до суду. Сам підозрюваний свою провину заперечує і стверджує, що кошти «були вкрадені в процесі якоїсь атаки».

Через кілька місяців біржа оголосила про готовність погасити всі заборгованості перед вкладниками. Спочатку передбачалося, що користувачі отримають компенсацію в фіаті - індійських рупіях, але потім фахівці Coinsecure знайшли спосіб провести транзакції по погашенню заборгованостей через сайт компанії.

Ще одна атака, яка пов'язана з співробітниками, сталася в Китаї. Невелика біржа Bter (займає 40 місце за обсягами торгівлі) була зламана кілька разів. Найбільше викрадення організували працівники біржі. У лютому 2015 року з холодного гаманця викрали 7 000 BTC. Після цього була припинена вся діяльність компанії, і тільки через кілька років керівництво Bter відновило виведення коштів зі своїх активів.

Наслідки хакерських атак

Кіберзлочини на біржах несприятливо позначаються на курсі криптовалют, вартість яких відновлюється до колишніх значень лише через кілька місяців. Хакери проводять атаки не тільки з метою крадіжки грошей. Багато зламів відбувається заради обвалу курсу будь-якої криптовалюти. Адже недосвідчені гравці ринку, яких зараз більшість, за негативної інформації починають швидко виводити маркери в фіат.

Імовірність таких продуманих тактичних атак з розвитком ринку і жорсткої конкуренції на ньому, буде рости. Монети, як видно на прикладах вище, можуть пропадати навіть з найбільших і, здавалося б, захищених бірж. Тому емітенти токенів повинні враховувати всі можливі ризики, пов'язані з волатильністю, на які можуть впливати хакери.

Фото: flickr.com
Обробка: Vinci

Крипто-звіринець: скамери та фудери

Крипто-звіринець: скамери та фудери
Скамери

У світі ICO так склалося, що навколо кожного проекту утворюється так зване ком'юніті, якщо, звичайно, засновники про це подбають. Що таке ком'юніті - розмова для абсолютно іншої статті. В рамках даного матеріалу під цим терміном ми будемо мати на увазі всіх тих людей, які підключені до одного з каналів зв'язку проекту.

Найбільш популярним з таких каналів найчастіше стає Telegram. Практично у будь-якого хоч трохи поважаючого себе ICO-проекту є чат в цьому мессенджері. Активність ком'юніті в чатах проектів - один з основних показників інтересу до проекту, а значить, і його перспектив.

Найчастіше чати проектів в Телеграмі фактично виконують роль служби підтримки: в них адміни допомагають користувачам вирішувати проблеми з транзакціями, уточнюють, як брати участь в баунтах і отримувати ейрдропи. І ось тут на сцену і виходять скамери.

Основний заробіток скамерів забезпечують довірливі учасники того чи іншого ком'юніті. Яка ж стратегія цих крипто-шахраїв? У кожному телеграм-чаті є як мінімум один адмін. Скамер починає свою аферу з створення облікового запису, максимально схожого на акаунт адміністратора. Кінцевий результат тут залежить від старань і фантазії скамерів. Справа в тому, що поміняти ім'я в Телеграмі не проблема, як і вкрасти чиєсь фото. Основна проблема для скамерів полягає в тому, що він ніяк не може в точності підробити username користувача, який є унікальним і, по суті, є посиланням на профіль користувача. Ось тут і стає в нагоді фантазія. Наприклад, ось 2 юзернейми: AlbinaSundberg і AIbinaSundberg. На перший погляд, ніякої різниці, але якщо придивитися, то можна помітити, що в одному випадку 2 літера - це L, а в іншому - заголовна i. А якщо в чаті більше одного адміністратора, скамери отримують ще більший простір для фантазії.

Скопіювавши аккаунт, скамер уважно стежить за чатом. Коли він бачить, що хтось звертається до адмінів з проблемою, він відразу пише цьому користувачу повідомлення, в якому від імені команди проекту пропонує всіляку допомогу у вирішенні проблеми, а заодно може ненав'язливо нагадати про те, що зараз у ICO є великий бонус, але він може застосовуватися в разі купівлі через сайт, тому «Ось вам номер гаманця, переводьте ефіри». Звичайно, досвідчений інвестор відразу запідозрить недобре і скамер буде виявлений і забанений. А ось ті, для кого покупка токенів на ICO новизна, найчастіше і стають жертвами скамерів.

По тому, як команда ICO бореться зі скамерами, теж можна зробити деякі висновки про проект. Звичайно, з огляду на специфіку Телеграма як додатка, адміни не мають великої кількості інструментів для боротьби з шахраями. Однак, грамотне спілкування та своєчасне і регулярне сповіщення аудиторії чату про активність скамерів, є ознакою хорошої команди. Зазвичай така інформація розміщується в закріпленому в чаті повідомленні. Втім, і сама наявність скамерів навколо проекту, скоріше, говорить про його перспективність, адже гроші можна вкрасти тільки там, де вони є.

Звичайно, скамери використовують і інші методи шахрайства. Наприклад, сучасні хакерські програми дозволяють вказати абсолютно будь-яку адресу відправника, це навіть вже не коштує якихось захмарних грошей. Скамери користуються такими програмами, щоб відправляти членам ком'юніті листи нібито з офіційної пошти того чи іншого проекту. Це дуже небезпечний інструмент у руках скамерів, бо мало хто засумнівається в достовірності листа, побачивши офіційну адресу пошти. В таких листах скамери прикидаються автоматичною розсилкою, яка іноді приходить після покупки токенів на ICO, і говорять про яку-небудь помилку транзакції, яку можна дуже легко виправити, просто відправивши гроші на інший гаманець...

Скамери - не єдині небезпечні мешканці крипто-простору. Останнім часом все більшу активність проявляють фудери. Їх назва походить від слова Fud, яке є акронімом від англійського «Fear, Uncertainty and Doubt», що перекладається як «Страх, невпевненість, Сумнів». Фудери навмисне створюють ситуацію, коли чутки або непідтверджені новини про конкретну криптовалюту впливають на її курс, що свідомо вигідно тільки вузькому сегменту аудиторії. Можна сказати, що fud - це тактичний інформаційний вплив з метою стимуляції паніки, яка, в свою чергу, призводить до масових скидів і зливів активів. Виявити фудерів складніше, ніж скамерів, тому що адміни можуть подумати, що це просто дуже стурбований член ком'юніті, і будуть намагатися заспокоїти його, проявляючи терпіння і ввічливість, в той час як він буде забивати чат насторожуючи інших учасників повідомленнями. Цей вид шахраїв небезпечний насамперед для самих ICO-проектів, так як через фудерів вони можуть не зібрати хардкап або побачити стрімке падіння своєї монети на біржі.

Звичайно, найкращий захист від скамерів і інших недобросовісних мешканців світу криптовалют - особиста обізнаність кожного. Тому так важливо спочатку ознайомитися з темою криптовалют і тими небезпеками, які її супроводжують, перш ніж відправляти куди-небудь свої кошти.

Фото: flickr.com
Обробка: Vinci