Причина этого инцидента заключалась в том, что сообщество не смогло обнаружить риски в предложении при проверке предложения и не проверило тщательно, есть ли уязвимости безопасности в коде контракта предложения.
Автор: SharkTeam
20 мая 2023 года по пекинскому времени Tornado.Cash подвергся атаке предложения, и злоумышленник получил прибыль в размере около 680 000 долларов США. SharkTeam впервые провела технический анализ этого инцидента и резюмировала меры безопасности, надеясь, что последующие проекты смогут извлечь из этого уроки и построить линию защиты безопасности для индустрии блокчейнов.
1. Анализ событий
Адрес злоумышленника:
0x092123663804f8801b9b086b03B98D706f77bD59
0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9
Контракт на атаку:
0xAF54612427d97489707332efe0b6290F129DbAcb
0x03ecf0d22f9ccd21144a7d492cf63b471916497a
0x7dc86183274b28e9f1a100a0152dac975361353d (контракт на развертывание)
0xc503893b3e3c0c6b909222b45f2a3a259a52752d (контракт с поддельным предложением)
(1) Сначала злоумышленник (0x08e80ecb) инициирует предложение к атакуемому контракту (0x5efda50f), утверждая, что это предложение является дополнением к Предложению 16.
(2) Но на самом деле в предложении есть дополнительная функция самоуничтожения.
(3) К сожалению, сообщество не обнаружило никаких проблем в этом предложении, и большинство членов проголосовало за принятие этого предложения.
(4) Злоумышленник создал множество контрактов для реализации передачи токенов.
(5) Злоумышленник (0x08e80ecb) уничтожает контракт предложения (0xc503893b) и его контракт создания (0x7dc86183). Контракт атаки (0xc503893b) впоследствии был перераспределен по тому же адресу.
(6) После изменения контракта предложения злоумышленник (0x08e80ecb) выполняет предложение и изменяет сумму блокировки токена адреса контракта, находящегося под его контролем, на 10000.
(7) После выполнения предложения злоумышленник (0x08e80ecb) переводит токены на свой адрес и получает право собственности на атакованный контракт.
Анализ уязвимостей: поскольку контракт создания (0x7dc86183) контракта предложения (0xc503893b) развертывается через creat2, после уничтожения двух контрактов по тому же адресу может быть развернут новый логический контракт, а выполнение предложения вызывается в форме Атакующий контракт может произвольно изменить значение в атакуемом контракте.
Краткое описание инцидента: Причина этого инцидента заключалась в том, что сообществу не удалось обнаружить риски в предложении при проверке предложения, а также тщательно не проверить, есть ли уязвимости в системе безопасности кода контракта предложения.
2. Рекомендации по безопасности
В ответ на эту атаку мы должны соблюдать следующие меры предосторожности в процессе разработки:
При разработке предложений полностью учитывайте безопасность механизма предложения и минимизируйте риск централизованного управления предложениями Рассмотрите возможность снижения ценности атак, увеличения стоимости получения права голоса, увеличения стоимости выполнения атак и т. д.
Прежде чем голосовать за предложение, сообщество должно тщательно проверить, есть ли в коде контракта бэкдор.
Прежде чем предложение будет одобрено, можно связаться со сторонней компанией, занимающейся аудитом безопасности, для проведения аудита безопасности кода логики контракта.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
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. Рекомендации по безопасности
В ответ на эту атаку мы должны соблюдать следующие меры предосторожности в процессе разработки: