Технологія блокчейн викликала інтерес у компаній у всьому світі. Його переваги, в тому числі незмінність і прозорість, спонукали старі компанії поза фінансами, такі як BMW і Bosch, експериментувати зі смарт-контрактами для створення ефективніших ланцюжків поставок і створення розумніших інженерних продуктів.
Розумні контракти, які, по суті, є програмним забезпеченням, закодованим у певному блокчейні, формалізують і виконують угоди між кількома сторонами, усуваючи потребу в надійному сторонньому посереднику, заощаджуючи час і дозволяючи багатосторонню перевірку на основі консенсусу. Їх можна використовувати в різних видах діяльності, таких як заповіти, ігри в шахи та навіть передача документів.
Але, незважаючи на весь руйнівний потенціал і обіцянки блокчейну про розрекламовані можливості, кількість крадіжок, націлених на смарт-контракти, за останні два роки зросла більш ніж у 12 разів. Якщо вони такі розумні, чому ми спостерігаємо таке величезне зростання кількості крадіжок?
Щоб краще зрозуміти, давайте з’ясуємо зв’язок між блокчейном і смарт-контрактами.
Децентралізація
Подумайте про блокчейн-мережу, як-от платформа Amazon AWS, і кожен із її смарт-контрактів як сервер. Завдяки блокчейну немає єдиного централізованого сервера, який могли б використати хакери, що ускладнює використання традиційних методів злому кіберзлочинцями, таких як троянські коні, фізичні атаки та програми-вимагачі. Блокчейн протидіє цьому, усуваючи єдину точку збою мережі.
Хоча блокчейн-мережу неможливо зламати, багато розповсюджених додатків і смарт-контрактів, які підтримує блокчейн, можуть.
Завдяки поступовому зростанню успіху та впливу децентралізованих фінансів (DeFi) через смарт-контракти надходять великі кошти, що робить їх привабливими для хакерів. І ця загроза, швидше за все, лише зростатиме, оскільки більше активів переміщуватиметься в ланцюжок із зростанням токенізованих реальних активів. Хакерство становить серйозну загрозу для цього сектору блокчейнів, що розвивається, оскільки активи, викрадені зі смарт-контрактів, надзвичайно важко повернути.
Загрози смарт-контрактам
Як і будь-який код, смарт-контракти піддаються людській помилці. Ці помилки можуть виникати у вигляді опечаток, спотворення специфікацій або більш серйозних помилок, які можуть бути використані для злому або «обману» смарт-контракту. На відміну від блокчейну, немає гарантії, що контракти були рецензовані або підтверджені.
Хоча помилкового кодування можна уникнути за допомогою аудиту смарт-контракту, інші загрози є більш складними. Наприклад, уразливість видимості за замовчуванням є типовою помилкою, яка виникає, коли видимість функцій не вказана, а певні функції залишаються загальнодоступними. Наприклад, хакери можуть отримати доступ до функції монетного двору та створити мільярди відповідних токенів. На щастя, цю вразливість можна запобігти, запустивши аудит, який гарантує, що всі функції встановлено як приватні за замовчуванням.
Ще одна більш складна і серйозна загроза, спричинена помилками кодування, - це атака повторного входу. Це трапляється, коли зловмисник використовує зовнішні виклики функцій смарт-контракту та розгортає шкідливий смарт-контракт для взаємодії з тим, хто зберігає кошти.
У 2016 році інцидент DAO, який стався на початку Ethereum, продемонстрував, наскільки небезпечним може бути цей тип атаки, і, зрештою, призвів до створення Ethereum Classic. Запобігти атакам повторного входу непросто, але існують фреймворки та протоколи, які можуть зменшити шкоду, зокрема CEI (перевірка, ефекти та взаємодії), засоби захисту повторного входу тощо.
Якщо ви знаєте код смарт-контракту, читання самого коду завжди є великою перевагою. Подібно до того, як читання контракту перед переїздом у нову квартиру захищає вас від будь-яких несподіванок, можливість читання коду смарт-контракту може виявити недоліки, шкідливі функції чи функції, які не працюють або не мають сенсу.
Однак, якщо ви кінцевий користувач, який не особливо розбирається в техніці, використовуйте лише розумні контракти з загальнодоступним кодом, який широко використовується. Це, на відміну від скомпільованих смарт-контрактів, де код прихований і люди не можуть його переглянути, є кращим варіантом.
Усунення вразливостей смарт-контракту
Не забуваймо, що більшість адміністраторів смарт-контрактів залишають собі деякі привілеї адміністратора, зазвичай для внесення змін після запуску. Щоб отримати доступ до цих привілеїв, адміністратори повинні використовувати свої закриті ключі. Ці закриті ключі є ще однією вразливістю, і якщо вони не зберігаються належним чином (тобто в автономному холодному сховищі), хакери, які якимось чином отримують доступ, можуть вносити зміни в смарт-контракт і направляти кошти куди завгодно.
Нещодавно Європейський парламент наказав використовувати механізм блокування, щоб зменшити шкоду у разі порушення розумного контракту. Хоча намір регуляторів полягав у тому, щоб надати людям більше захисту їхніх особистих даних, цей акт викликав занепокоєння у спільноті Web3.
Якщо реалізовано неправильно, перемикач блокування може знищити весь смарт-контракт і будь-яке значення, що зберігається в ньому. Кращою реалізацією було б активувати функцію призупинення, яка, у разі загрози безпеці, може заморозити смарт-контракт і повторно активувати його, коли проблему буде вирішено.