SharkTeam: анализ принципа атаки Tornado.Cash Proposal

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

Автор: 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. Рекомендации по безопасности

В ответ на эту атаку мы должны соблюдать следующие меры предосторожности в процессе разработки:

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