Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 910

Атака повторного входа (Reentrancy)

Что такое Атака повторного входа (Reentrancy)?

Атака повторного входа (Reentrancy)Эксплойт смарт-контракта, в котором внешний вызов позволяет атакующему рекурсивно повторно входить в функцию до обновления состояния и опустошать средства.


Reentrancy возникает, когда контракт отправляет ETH или токены на внешний адрес (через call, transfer или ERC-777-хук) до того, как обновит собственное состояние. Атакующий управляет этим адресом и в обратном вызове снова обращается к функции вывода, повторяя цикл до опустошения контракта. Существуют варианты: однофункциональный, межфункциональный, межконтрактный и read-only. Меры защиты: шаблон checks-effects-interactions, ReentrancyGuard от OpenZeppelin, паттерн pull-payment и отказ от низкоуровневых вызовов недоверенных контрактов. Атака на The DAO в 2016 году — канонический пример, приведший к хардфорку Ethereum и Ethereum Classic.

Примеры

  1. 01

    Взлом The DAO (июнь 2016) увёл около 3,6 млн ETH через рекурсивные вызовы splitDAO.

  2. 02

    Инцидент в Cream Finance в 2021 году использовал межфункциональную реентрантность через колбэки ERC-777.

Частые вопросы

Что такое Атака повторного входа (Reentrancy)?

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

Что означает Атака повторного входа (Reentrancy)?

Эксплойт смарт-контракта, в котором внешний вызов позволяет атакующему рекурсивно повторно входить в функцию до обновления состояния и опустошать средства.

Как работает Атака повторного входа (Reentrancy)?

Reentrancy возникает, когда контракт отправляет ETH или токены на внешний адрес (через call, transfer или ERC-777-хук) до того, как обновит собственное состояние. Атакующий управляет этим адресом и в обратном вызове снова обращается к функции вывода, повторяя цикл до опустошения контракта. Существуют варианты: однофункциональный, межфункциональный, межконтрактный и read-only. Меры защиты: шаблон checks-effects-interactions, ReentrancyGuard от OpenZeppelin, паттерн pull-payment и отказ от низкоуровневых вызовов недоверенных контрактов. Атака на The DAO в 2016 году — канонический пример, приведший к хардфорку Ethereum и Ethereum Classic.

Как защититься от Атака повторного входа (Reentrancy)?

Защита от Атака повторного входа (Reentrancy) обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Атака повторного входа (Reentrancy)?

Распространённые альтернативные названия: Рекурсивный вызов.

Связанные термины