Атака повторного входа (Reentrancy)
Что такое Атака повторного входа (Reentrancy)?
Атака повторного входа (Reentrancy)Эксплойт смарт-контракта, в котором внешний вызов позволяет атакующему рекурсивно повторно входить в функцию до обновления состояния и опустошать средства.
Reentrancy возникает, когда контракт отправляет ETH или токены на внешний адрес (через call, transfer или ERC-777-хук) до того, как обновит собственное состояние. Атакующий управляет этим адресом и в обратном вызове снова обращается к функции вывода, повторяя цикл до опустошения контракта. Существуют варианты: однофункциональный, межфункциональный, межконтрактный и read-only. Меры защиты: шаблон checks-effects-interactions, ReentrancyGuard от OpenZeppelin, паттерн pull-payment и отказ от низкоуровневых вызовов недоверенных контрактов. Атака на The DAO в 2016 году — канонический пример, приведший к хардфорку Ethereum и Ethereum Classic.
● Примеры
- 01
Взлом The DAO (июнь 2016) увёл около 3,6 млн ETH через рекурсивные вызовы splitDAO.
- 02
Инцидент в Cream Finance в 2021 году использовал межфункциональную реентрантность через колбэки ERC-777.
● Частые вопросы
Что такое Атака повторного входа (Reentrancy)?
Эксплойт смарт-контракта, в котором внешний вызов позволяет атакующему рекурсивно повторно входить в функцию до обновления состояния и опустошать средства. Относится к категории Web3 и блокчейн в кибербезопасности.
Что означает Атака повторного входа (Reentrancy)?
Эксплойт смарт-контракта, в котором внешний вызов позволяет атакующему рекурсивно повторно входить в функцию до обновления состояния и опустошать средства.
Как защититься от Атака повторного входа (Reentrancy)?
Защита от Атака повторного входа (Reentrancy) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Атака повторного входа (Reentrancy)?
Распространённые альтернативные названия: Рекурсивный вызов.