Я знаю, що всі говорять про атаку ByBit, і це, мабуть, сота стаття, яку ви прочитали на цю тему, але я все одно вважаю, що варто поділитися кількома думками з цього приводу.
Коротше кажучи, північнокорейській Lazarus Group вдалося вкрасти 1,5 мільярда доларів із холодного гаманця ByBit. Холодним гаманцем був безпечний багатопідписний гаманець , і транзакцію підписали всі авторизовані сторони, оскільки з інтерфейсу користувача вона виглядала цілком дійсною.
Пізніше виявилося, що безпечний інтерфейс користувача був зламаний. Зловмисники отримали облікові дані AWS S3 від машини розробника, що дозволило їм змінити інтерфейс користувача.
Ось у двох словах історія. Я не думаю, що вказувати пальцем чи звинувачувати є особливо корисним. Натомість має сенс зосередитися на ключових висновках і на тому, як ця технологія може бути ще безпечнішою.
Я розумію, що заднім числом завжди 20/20, і я не стверджую, що зробив би краще. Команда Safe виконує чудову роботу, і все, що я тут обговорюватиму, стосується компонентів за межами самого Safe (мультипідписаного гаманця на основі розумного контракту).
Я твітнув свої думки після інциденту. У цій статті я хотів би зупинитися на них більш детально.
Однією з найкращих особливостей безпечного гаманця є те, що його можливості можна розширити за допомогою модулів і захисних пристроїв . Модулі додають нові функції в гаманець, а охоронці виконують перевірки перед виконанням транзакції. Ці функції роблять гаманець зручним для налаштування та значно підвищують його безпеку.
Наприклад, можна обмежити гаманець дозволяти лише транзакції ERC-20 (у цьому випадку зловмисну транзакцію було виконано через delegatecall
). Також легко впровадити правило, яке вимагає додаткових підписів для транзакцій, що перевищують певний поріг, подібно до того, як банки дозволяють користувачам встановлювати ліміти для транзакцій великої вартості.
Навіть правильне використання лише цієї функції може запобігти багатьом атакам або принаймні мінімізувати потенційні втрати.
Кожна система настільки сильна, наскільки сильна її найслабша частина. У цьому випадку найслабшою ланкою був не розробник, чиї облікові дані S3 були вкрадені — це було щось набагато глибше. Незалежно від того, наскільки безпечною є технологія Web3 (блокчейн і смарт-контракти), якщо інтерфейс користувача на основі Web2 вразливий, уся система залишається під загрозою.
Очевидним рішенням є використання незмінного інтерфейсу користувача Web3. Це можуть забезпечити такі технології, як IPFS, Ethereum Swarm або інші рішення для зберігання Web3. Найпростіша реалізація полягає в тому, щоб зберігати хеш вмісту інтерфейсу як постійну змінну в смарт-контракті, гарантуючи, що будь-яка зміна інтерфейсу вимагатиме модифікації самого смарт-контракту.
Цей підхід повністю прив’язує інтерфейс користувача до смарт-контракту, унеможливлюючи зміну інтерфейсу без попереднього злому самого контракту. За допомогою цього простого рішення можна ефективно запобігати атакам на основі інтерфейсу користувача.
Навіть якщо смарт-контракт безпечний, а інтерфейс користувача незмінний, система залишається вразливою, якщо пристрої підписантів можуть бути скомпрометовані. Якщо зловмисник отримує доступ до пристрою підписувача, він все одно може замінити інтерфейс користувача на стороні клієнта.
З цієї причини кожен, хто тримає великі суми в холодному гаманці, повинен використовувати спеціальний пристрій, наприклад iPad, виключно для підписання транзакцій. Цей пристрій має служити лише для цієї мети: жодних інших програм не встановлено, електронної пошти чи веб-перегляду, лише необхідне середовище для підписання транзакцій.
Якщо хтось розпоряджається мільярдами доларів, витратити кілька сотень доларів на спеціальний пристрій підпису навряд чи є значними витратами.
Зовнішнього аудитора можна додати до гаманця як додаткового підписувача, модуля або охоронця для перевірки транзакцій і блокування їх, якщо вони здаються підозрілими. Виявлення таких підозрілих транзакцій можна здійснити за допомогою відносно простих шаблонів, наприклад, переміщення надзвичайно великої суми коштів або виконання делегованого виклику.
У разі підозрілої транзакції система зовнішнього аудиту може повідомити підписантів, запропонувавши їм вручну переглянути транзакцію. Якщо вони все ще вважають це законним, вони можуть повторно підписати його як підтвердження, додавши додатковий рівень безпеки.
Не існує такої речі, як незламна система, але прості рішення, описані вище, можуть значно ускладнити атаку. Якщо хтось керує мільярдами доларів, варто витратити час і зусилля на впровадження цих простих заходів безпеки.
Я не можу підкреслити, що всі ці рішення побудовані на блискучій архітектурі Safe та таких функціях, як модулі та захисні засоби.
Як кажуть, те, що не вбиває, робить вас сильнішим. І сьогодні Safe сильніший, ніж будь-коли!