SharkTeam: Аналіз принципу атаки Tornado.Cash

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

Автор: SharkTeam

20 травня 2023 року за пекінським часом Tornado.Cash зазнав атаки пропозиції, і зловмисник отримав прибуток у розмірі близько 680 000 доларів США. SharkTeam вперше провела технічний аналіз цього інциденту та підсумувала заходи безпеки, сподіваючись, що наступні проекти зможуть навчитися на цьому та створити лінію безпеки для індустрії блокчейнів.

1. Аналіз подій

Адреса зловмисника:

0x092123663804f8801b9b086b03B98D706f77bD59

0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9

Контракт на атаку:

0xAF54612427d97489707332efe0b6290F129DbAcb

0x03ecf0d22f9ccd21144a7d492cf63b471916497a

0x7dc86183274b28e9f1a100a0152dac975361353d (контракт на розгортання)

0xc503893b3e3c0c6b909222b45f2a3a259a52752d (фальшивий договір пропозиції)

Атакований договір:

0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce

Ініціювати транзакцію пропозиції:

0x34605f1d6463a48b818157f7b26d040f8dd329273702a0618e9e74fe350e6e0d

Атакуючі транзакції:

0x3274b6090685b842aca80b304a4dcee0f61ef8b6afee10b7c7533c32fb75486d

Процес атаки:

(1) Спочатку зловмисник (0x08e80ecb) ініціює пропозицію до атакуваного контракту (0x5efda50f), стверджуючи, що ця пропозиція є доповненням до пропозиції 16

(2) Але насправді в пропозиції є додаткова функція самознищення.

(3) На жаль, спільнота не знайшла жодних проблем у цій пропозиції, і більшість членів проголосували за прийняття цієї пропозиції.

(4) Зловмисник створив багато контрактів для здійснення передачі токенів

(5) Зловмисник (0x08e80ecb) знищує контракт пропозиції (0xc503893b) і свій контракт створення (0x7dc86183). Контракт на атаку (0xc503893b) згодом було повторно розгорнуто за тією ж адресою.

(6) Після зміни контракту пропозиції зловмисник (0x08e80ecb) виконує пропозицію та змінює суму блокування маркера адреси контракту під його контролем до 10000.

(7) Після виконання пропозиції зловмисник (0x08e80ecb) передає токени на свою власну адресу та отримує право власності на атакований контракт.

Аналіз вразливості: оскільки контракт створення (0x7dc86183) контракту пропозиції (0xc503893b) розгортається через creat2, після того, як два контракти знищено, новий логічний контракт може бути розгорнуто на тій же адресі, і виконання пропозиції викликається у формі Контракт, що атакує, може довільно змінювати значення в контракті, що атакується.

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

2. Рекомендації щодо безпеки

У відповідь на цю атаку ми повинні дотримуватися таких запобіжних заходів під час процесу розробки:

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