Статья глоссария
Атака повторного входа (reentrancy)
Кошельки и безопасностьАтака повторного входа вызывает контракт снова до обновления балансов, позволяя выводить средства многократно в одной транзакции.
Определение
Атака повторного входа (reentrancy) использует смарт-контракт, который отправляет средства раньше, чем обновляет собственные внутренние записи. Контракт-получатель пользуется этим моментом и снова вызывает исходную функцию, где баланс ещё старый, повторяя вывод несколько раз в рамках одной транзакции. Это один из самых давних и известных классов уязвимостей смарт-контрактов, во многом сформировавший современные практики разработки на Solidity. Стандартная защита — шаблон checks-effects-interactions, при котором состояние записывается до любого внешнего вызова, и «замки» повторного входа, блокирующие функцию на время исполнения. Reentrancy напоминает: в общем компонуемом коде любой внешний вызов может передать управление недоверенной стороне, поэтому аудиты и тесты уделяют порядку вызовов особое внимание.
Далее
Похожие термины
Ещё в разделе Кошельки и безопасность
Захват аккаунтаОтравление адреса (address poisoning)Антифишинговый кодПрава API-ключаВзлом моста (bridge exploit)Программа вознаграждения за уязвимостиПодмена буфера обменаХолодное хранение (cold storage)Разрешение на коллекцию (setApprovalForAll)КриптофишингКастодиальный и некастодиальныйСтрахование хранения