Як зламують блокчейн: атаки на децентралізовані мережі
- 1. Атака 51%
- 2. Подвійна витрата (подвійне витрачання)
- 3. Атака Фінні (Finney Attack)
- 4. Перегонова атака (Race attack)
- 5. Атака Сивілли (Сибілли)
- 6. Егоїстичний майнінг
- 7. Маршрутизуючі атаки
- 8. Використання вразливостей смарт-контрактів
- 9. DDoS-атаки та уповільнення часу
- 10. Атаки на приватний ключ
- 11. Висновок
Незважаючи на те, що блокчейн, як розподілений реєстр даних, набагато більш надійне рішення для зберігання інформації та проведення транзакцій, ніж централізовані бази, його теж можна зламати. І спроби робляться із завидною періодичністю. Атаки на децентралізовані мережі бувають різними, але здебільшого вони спрямовані на те, щоб використати лазівки в механізмі консенсусу й отримати контроль над хешрейтом блокчейна. Це дає змогу змінювати дані в реєстрі, створювати хаос і красти криптовалюту.
У цій статті редакція сайту ITstatti.in.ua розповість про те, як атакують блокчейни і до чого це призводить.
Атака 51%
Атака 51% - головна загроза для блокчейнів. Вона актуальна для мереж, що використовують алгоритм консенсусу Proof-of-Work.
Суть її полягає в тому, щоб узяти під контроль понад 50% обчислювальних потужностей (хешрейту) мережі. Наслідки аналогічні володінню контрольним пакетом акцій компанії: можна ухвалювати будь-які рішення і робити все що завгодно з компанією, акціями якої володієте. У випадку з хешрейтом - з блокчейном, 51% обчислювальних потужностей якого ви контролюєте.
Якщо зловмисники отримують понад 50% майнінгових потужностей, вони можуть змінювати порядок транзакцій, видаляти їхнє підтвердження, заважати іншим майнерам видобувати крипту, тобто створювати хаос і збої в роботі мережі. І "під шумок", наприклад, витрачати одну й ту саму криптовалюту кілька разів (подвійне витрачання).
Звідки взяти стільки потужності? Є декілька способів: орендувати багато майнінгового обладнання, взяти під контроль (або організувати самому) майнінговий пул. Ще один спосіб - підмовити інших майнерів або піти зовсім вже незаконним шляхом, організувавши за допомогою шкідливого ПЗ майнінговий ботнет.
Але атакувати таким чином великий блокчейн, такий як Bitcoin, де в мережі працює дуже велика кількість вузлів, а обладнання для майнінгу та витрати на електроенергію величезні, практично неможливо. Та й просто невигідно. Однак невеликі проекти не застраховані від цього типу загроз.
Наприклад, такі мережі, як Zencash (ZEN), Litecoin Cash (LCC), MonaCoin (MONA), Verge (XVG), Bitcoin Gold (BTG) піддавалися атаці 51%.
Здійснивши атаку 51%, зловмисники можуть скористатися абсолютно всіма вразливостями протоколу, але, як правило, їхньою метою є здійснення подвійної витрати.
Наприклад, вдала атака на мережу ZenCash (ZEN) у 2018 році принесла зловмисникам $550 тис. Вони змогли подвоїти дві великі транзакції (13 000 і 6 600 ZEN). Атака тривала 110 блоків, це зайняло близько 4 годин, а витрати на неї, порівняно з вкраденими монетами, були мінімальними - $30 тис.
Ще приклад: Ethereum Classic у 2020 році атакували тричі за допомогою оренди обчислювальних потужностей у сервісі NiceHash. У липні-серпні хешрейт ETC сильно впав, і атакувальник цим скористався. Він орендував GPU з хешрейтом понад 51% від усієї мережі Ethereum Classic, після чого йому вдалося створити подвійних витрат на суму понад 1 млн. ETC ($9 млн. на той момент).
Витрати на оренду хешрейту становили сотні тисяч доларів, і кінцевий прибуток точно не відомий.
І таких прикладів, на жаль, багато.
Подвійна витрата (подвійне витрачання)
Проблема подвійного витрачання з'явилася набагато раніше блокчейна і криптовалют. Суть у тому, що якщо ви обмінюєте один предмет на інший не просто зараз, а даєте обіцянку заплатити пізніше, то завжди є ризик, що ви його не дотримаєтеся. Наприклад, надасте документ, що обіцяє оплату (договір, розписку тощо), двом або трьом контрагентам, при тому, що обіцяний актив у вас тільки один. Це і є подвійне витрачання. У блокчейні воно здійснюється саме за таким принципом.
Подвійна витрата відбувається, коли зловмисник витрачає одні й ті самі монети два або більше разів. Наприклад, користувач, який має 1 BTC, надсилає його одразу кільком контрагентам і отримує за це від них якийсь еквівалент. Але за фактом цей 1 BTC отримує тільки хтось один.
При правильній роботі мережі тільки одна транзакція отримає схвалення більшості вузлів. Як правило, так і буває. У блокчейн вбудовано захист для запобігання подібним атакам. Але незважаючи на це, ризик подвійного витрачання все ще присутній.
Зробити подвійну витрату можна різними способами, наприклад унаслідок атаки 51%. Коли зловмисник отримує під контроль більше половини хешрейта, він може генерувати нові блоки самостійно, вносити в них зміни, відхиляти і підтверджувати "потрібні" транзакції.
На цьому прикладі видно, як зловмисники створили відгалуження від головного ланцюга і протягом п'яти легітимних блоків змогли підтверджувати несправжні.
За цей час можна, наприклад, відправити монети на криптобіржу, яка вимагає 1-5 підтверджень блокчейна, продати їх і отримати натомість іншу криптовалюту або фіат.
Пізніше, коли "вікно атаки" закриється, серію несправжніх блоків буде відкинуто, але для зловмисника ситуація матиме такий вигляд: він завів свої монети на біржу, продав їх, а коли блокчейн відновив консенсус, у нього залишилися ті самі монети в оригінальному ланцюжку блоків, оскільки, по суті, він продав "підроблену" криптовалюту.
Атака Фінні (Finney Attack)
Атака Фінні названа на честь першого одержувача біткойна - Хела Фінні, який також першим зробив припущення про можливість подвійного витрачання криптовалюти в блокчейні.
Finney Attack - це варіант подвійної витрати, яка може спрацювати, якщо контрагент прийме непідтверджену транзакцію. Суть такої атаки полягає в тому, що майнер може згенерувати блок і включити в нього транзакцію зі своєї адреси "А" на свою ж адресу "В", але не транслювати його відразу в мережу. Далі йому потрібно провести ще одну транзакцію з адреси "А" на адресу "С", що належить іншому користувачеві. Якщо цей користувач прийме транзакцію без підтвердження мережі, то шахрай транслює попередній блок, що містить його першу транзакцію. Таким чином, транзакція з адреси "А" на адресу "С" стає недійсною, а зловмисник отримує подвійну вигоду.
Перегонова атака (Race attack)
Цей тип атаки являє собою змагання на швидкість між двома транзакціями. Шахрай з різних пристроїв одночасно відправляє одні й ті самі монети з однієї адреси двом різним одержувачам. Обидва одержувачі відправляють свої товари або криптовалюту, але та з транзакцій, яка проходить пізніше, стає недійсною.
Ця атака можлива тільки в тому разі, якщо продавцем буде прийнята непідтверджена транзакція. Для того щоб не потрапити на гачок таких "гонщиків", достатньо дочекатися хоча б одного підтвердження операції.
Атака Сивілли (Сибілли)
Цю атаку названо на честь головної героїні книги " Сивілла" Флори Рити Шрайбер про лікування дисоціативного розладу особистості. Її суть полягає в тому, щоб заповнити мережу підконтрольними хакеру вузлами. Зловмисник "оточує" ноду жертви так, щоб контролювати всі транзакції. У великих мережах, таких як Bitcoin, це зробити практично неможливо, оскільки для підтвердження транзакцій нода обирає вузол мережі практично випадковим чином. Тому, як правило, атаці Сивілли піддаються молоді криптопроекти. Річ у тім, що, підключаючись до мережі, нода не знає IP довірених вузлів і запитує їх. Якщо запит потрапить на вузол зловмисника, той може надіслати у відповідь адреси підконтрольних йому вузлів.
Внаслідок цього хакер може:
- блокувати транзакції користувача, оскільки фактично від'єднує його від загального блокчейна;
- ухвалювати рішення, до якого блоку "під'єднати" користувача (як правило, це блоки з подвійним витрачанням);
- відстежувати всі транзакції користувача.
Тобто підконтрольні зловмиснику вузли здатні спонукати інші ноди до схвалення некоректних даних.
Егоїстичний майнінг
Блокчейни, що працюють на PoW, мають уразливість, яку можуть використати несумлінні майнери, - ймовірність одночасного підтвердження кількох блоків.
Якщо два блоки згенеровані одночасно і об'єднані в мережі з попередніми, блокчейн розгалужується на два ланцюги. Таке розгалуження робить архітектуру блокчейна складнішою і уповільнює транзакції, тому майнери після підтвердження блоків повинні негайно передавати дані про підтвердження іншим вузлам, щоб між блоками не було конфлікту.
Але, так звані, егоїстичні майнери приховують цю інформацію від інших учасників мережі і вводять в оману "чесні" вузли, які продовжують генерувати новий ланцюг блоків і тим самим збільшують "розгалуження" мережі.
Припустимо, егоїстичний майнер добув 2001 блок, але не передав цю інформацію в мережу. Решта вузлів продовжують добувати нові блоки, починаючи з 2000. Тобто з блоком 2000 пов'язано вже два блоки: один від чесного майнера, інший від зловмисника. І обидва ці блоки мають № 2001.
Шахраї продовжують генерувати блоки і додавати їх у свій ланцюг, і він, відповідно, подовжується. Далі хакери передають дані про здобутий 2001 блок, мережа розпізнає, що він був знайдений першим, визначає егоїстичний ланцюг як дійсний і відкидає блоки, які весь цей час додавалися чесними вузлами. У результаті чесні майнери не отримують винагороду, а їхні потужності витрачаються даремно.
Маршрутизуючі атаки
Такі атаки не мають безпосереднього відношення до проблем безпеки самого блокчейна. Вони використовують уразливості в протоколах підключення інтернет-провайдерів. Отримавши доступ до такого протоколу, хакер може публікувати хибні маршрути. Таку атаку можна використовувати, зокрема, для здійснення подвійної витрати. Якщо затримувати доставку нових блоків, їх не буде видно мережі, і в цей час можна зробити подвійне витрачання криптовалюти.
Використання вразливостей смарт-контрактів
Програмний код смарт-контрактів пишуть люди, а людям притаманно помилятися. Ось такі помилки і використовують хакери для злому.
У смарт-контрактах зустрічаються різні вразливості. Це може бути складна проблема, яку дуже важко виявити, а може бути просто помилка в коді. Але, так чи інакше, будь-яка помилка загрожує втратою мільйонів доларів.
У своєму звіті від 30.06.2023 року компанія Beosin, що займається безпекою Web3, повідомляє, що загальна вартість криптовалюти, втраченої внаслідок шахрайства, зломів і махінацій, у першому півріччі 2023 року становила $656 млн. Більшу частину (56%) вкраденої криптовалюти втратили через уразливості смарт-контрактів.
Злом блокчейна може статися не тільки через уразливість у смарт-контракті, а й у мові, якою він написаний. 30 липня 2023 року зламу зазнали 4 пули ліквідності Curve Finance через уразливість у Vyper - мові програмування, якою прописуються смарт-контракти для біржі Curve. Curve Finance - децентралізована біржа з технологією автоматизованого маркет-мейкера (AMM-DEX), основний хаб ліквідності стейблкоїнів у DeFi. Загалом було вкрадено близько $60 млн (щоправда, $20 млн із них забрали білі хакери, тому гроші повернулися на Curve). Найбільше шкоди було завдано через злом основного пулу СRV/ETH, звідти було виведено всю ліквідність (близько $40 млн).
DDoS-атаки та уповільнення часу
DDoS-атаки здійснюються не заради крадіжки крипти, а для того, щоб завдати шкоди криптопроекту, дискредитувати стартап. Суть такої атаки полягає у надсиланні величезної кількості непотрібних, "сміттєвих" транзакцій у мережу, що ускладнює її роботу, гальмує передачу даних, оновлення блокчейна і створення нових блоків у ланцюзі.
Атаки на приватний ключ
Для забезпечення конфіденційності передавання даних у відкритих каналах на блокчейні використовують технологію асиметричного шифрування, а саме криптографію з приватними (закритими) і публічними (відкритими) ключами. Приватний і публічний ключі пов'язані між собою математичним алгоритмом. Знаючи публічний ключ користувача, можна зашифрувати для нього повідомлення, яке він зможе прочитати, розшифрувавши його своїм приватним ключем. Якщо у вас є закритий ключ, ви можете відновити з нього відкритий, у зворотному ж напрямку ця схема не працює.
Приватні ключі надають повний доступ до всіх криптоактивів власників цих ключів, саме тому за ними полюють зловмисники.
Найлегше отримати доступ до приватного ключа і криптовалюти через seed-фразу, починаючи від банальної крадіжки листочка з мнемонічним кодом і закінчуючи соціальною інженерією, фішинг-атаками та іншими фокусами.
Щоб надійно захистити ваш приватний ключ і, відповідно, всі ваші криптоактиви, довірте його зберігання надійному криптогаманцю.
Висновок
Варто визнати, що на сьогодні блокчейн стикається з безліччю загроз. Усі перераховані вище популярні атаки плюс індивідуальні проблеми мереж - помилки в програмному коді, методах шифрування тощо. Хакери шукають ці лазівки і намагаються скористатися ними: знаходять уразливості в коді смарт-контрактів, використовують недоліки самої блокчейн-технології, атакують криптовалютні біржі.
Існують й інші типи атак, поки що суто гіпотетичні:
- канібалізм пулів (знищення пулу для порушення роботи блокчейна);
- атака P+Epsilon (на думку Віталіка Бутеріна, одна з найнеприємніших проблем у мережах на PoW, яка полягає в даванні зловмисником своєрідного хабара іншим учасникам мережі в обмін на підтримку ними внесених у блокчейн змін);
- таймджекінг (спроби маніпуляцій міткою часу транзакцій).
Ці типи атак поки що хакерів не цікавлять.
Рішення тут тільки одне - постійно вдосконалювати захисні механізми децентралізованих мереж. Хоча, як показує практика, що серйозніший захист, то витонченіші способи його обходу знаходять хакери. Ця боротьба, мабуть, буде вічною. Адже в традиційних фінансах теж зламують банкомати, крадуть гроші з кредитних карт, грабують банки... На 100% захистити неможливо жодну систему.
Читайте також - Що таке FUD і FOMO в крипті: пояснюємо на прикладах.
Вітаю всіх на нашому інтернет-журналі. Я - Вольдемар Воронцовський. Цей матеріал написаний і опублікований одним з наших авторів (експертом у своїй справі). За кожною статтею стоїть досвідчений співробітник нашої команди, який перевірив матеріал на помилки і актуальність. Познайомитися з нами можна в розділі - «Редакція сайту».