Чому так багато зломів смартконтрактів та протоколів?
На жаль, статистика за минулий рік каже, що зі смартконтрактів, DeFi-протоколів і кросчейн-мостів було поцуплено понад $4,2 млрд у крипті. Чому ж це стається так часто?
Смартконтракти є важливою складовою сектору DeFi. Їх активно використовують різні децентралізовані застосунки (dApps), біржі (DEX) та протоколи. Багато dApps поспішають вийти на ринок без проходження аудиту, маючи у 99% випадків вразливості у коді та інші недоліки. Цим можуть скористатися хакери, що призведе до втрати клієнтських активів. Простими словами, якщо смартконтракт є вразливим, то вразливим буде й dApp чи протокол, який використовує цей смартконтракт.
Звідки взялася проблема
Оскільки смартконтракти, як і будь-яке програмне забезпечення, розробляються людьми, то людський фактор має визначальне значення та закладає значні ризики. Незалежно від професіоналізму та досвіду розробника, ризики наявності багів чи дірок у коді присутні завжди. Тому смартконтракти не застраховані від злому. У разі виявлення дірки у коді смартконтракту злочинці виведуть усі криптоактиви з нього, а далі через міксери перекажуть їх на власні гаманці, не залишивши слідів.
Розробники dApps та протоколів припускаються помилок не рідше, ніж програмісти, що створюють смартконтракти. На жаль, більшість програмного забезпеченням для сектору DeFi створюється через копіювання відкритого коду чи використання вже готових шаблонів, які доцільно ретельно доопрацьовувати під кожен окремий проєкт. На жаль, у більшості випадків це не робиться, що значно збільшує ризики та вірогідність злому.
Багато DeFi-проєктів замовляють розробку у зовнішніх компаній, програмісти яких навмисно залишають дірки чи навіть бекдори, щоб через деякий час скористатись ними за вказівкою топменеджерів (цей варіант також не виключений) чи, наприклад, вже після звільнення з компанії.
Написання коду не у форматі аутсорсингу, а з використанням штатних розробників на зарплаті теж не дає особливих гарантій, тому що вищезазначені сценарії і тут мають місце. Творці проєкту, заздалегідь орієнтованого на екзитскам, можуть використати дірки у коді для крадіжки клієнтських активів, перекинувши відповідальність за це на зовнішніх хакерів, що нібито зламали смартконтракт чи протокол. І знайти у такому випадку правду, як і втрачені кошти, буде проблематично.
Отже, запуск або розгортання смартконтракту без проходження аудиту, ігнорування перевірок безпеки коду, відмова від тестів на проникнення (penetration tests) та співпраця з неперевіреними компаніями-розробниками чи програмістами-фрілансерами рано чи пізно може призвести до катастрофи.
Що робити командам DeFi-сервісів
Перед початком роботи в режимі промислової експлуатації варто перестрахуватися.
- Замовити і пройти аудит смартконтрактів. Найбільш відомі компанії-аудитори — Certik та ConsenSys Diligence. Проте в кожній країні присутні місцеві компанії, репутацію та досвід яких необхідно ретельно перевірити перед тим, як розпочати співпрацю.
- Провести тести на проникнення як в тестовому, так і в продакшн-середовищі.
- Провести навантажувальний тест (щоб уникнути ситуацій з недоступністю сервісу через наплив великої кількості користувачів).
- Провести аудит хмарних оточень.
- В ідеалі — провести повторний аудит, замовивши його в іншої компанії: два аудитори краще, ніж один.
Як користувачам перевіряти DeFi-сервіси
Перед тим, як довіряти активи децентралізованому сервісу, користувачам варто перевірити наступне:
- команду проєкту. Якщо деякі прізвища були раніше помічені у шахрайських оборудках — зрозуміло, що ризикувати коштами не варто;
- строк присутності на ринку: чим довше, тим краще (проєкти, які існують менше року — мають статус високоризикових);
- наявність звіту про проходження аудиту. Бажано від двох компаній.
І завжди пам’ятайте, що варто інвестувати стільки, скільки зможете дозволити собі втратити.