Что Такое Повторная Атака?

Процедура называется реентерабельной, если ее выполнение может быть прервано в середине, повторно инициировано, и оба запуска могут завершиться без каких-либо ошибок выполнения.

В контексте смарт-контрактов Ethereum повторный вход может привести к серьезным уязвимостям.

Самым известным примером этого стал взлом DAO, в ходе которого было похищено эфира на сумму 70 миллионов долларов.

Так что же такое уязвимость повторного входа? Как это работает и как это предотвратить? Механизм Примером реентерабельного процесса может быть отправка электронной почты.

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

Это безобидный пример.

Однако представьте себе плохо спроектированную систему онлайн-банкинга для выдачи банковских переводов, в которой баланс счета проверяется только на этапе инициализации.

Пользователь может инициировать несколько переводов, фактически не отправляя ни одного из них.

Банковская система подтвердит, что на счету пользователя имеется достаточный баланс для каждого отдельного перевода.

Если во время фактической отправки не было дополнительной проверки, пользователь мог отправить все транзакции и потенциально превысить свой баланс.

Это основной механизм повторного входа, используемый в знаменитом взломе DAO. Пример из реальной жизни — взлом DAO DAO — популярный децентрализованный инвестиционный фонд, основанный на смарт-контрактах.

В 2016 году смарт-контракт DAO накопил эфира на сумму более 150 000 000 долларов (на тот момент).

Если проект, запрашивающий финансирование, получит достаточную поддержку со стороны сообщества DAO, адрес Ethereum этого проекта может вывести эфир из DAO. К несчастью для DAO, механизм передачи передавал Эфир на внешний адрес, прежде чем обновить его внутреннее состояние и отметить, что баланс уже был передан.

Это дало злоумышленникам возможность вывести больше эфира, чем они имели право, при повторном входе.

Взлом DAO воспользовался резервной функцией Ethereum для повторного входа.

Каждый байт-код смарт-контракта Ethereum содержит так называемую резервную функцию по умолчанию, которая имеет следующую реализацию.

   

contract EveryContract {

Теги: #информационная безопасность #блокчейн #уязвимости #уязвимость #Solidity #Solidity #смарт-контракты #смарт-контракты #смарт-контракты #блок
Вместе с данным постом часто просматривают: