Параметр Reentrancy Flash Loan Exploit
Где уязвимость В коде функции вывода В логике расчёта цены или коллатерала
Нужен ли капитал Минимальный, есть пыль Огромный, берётся через флэш-займ
Длительность атаки Одна транзакция, рекурсия Одна транзакция, манипуляция оракулом
Защита ReentrancyGuard, checks-effects-interactions TWAP-оракулы, защита от мгновенных свопов
Знаменитый случай The DAO 2016 — 60 млн bZx, Harvest Finance, Cream Finance

Reentrancy эксплуатирует порядок инструкций внутри одной функции, Flash Loan Exploit — связку нескольких смарт-контрактов через ценовой оракул. Reentrancy исправляется за 1 строку кода, Flash Loan Exploit — это уже архитектурная проблема.

Как работает атака на практике

  • Атакующий разворачивает контракт-приёмник со зловредной функцией fallback
  • Делает депозит 1 ETH в уязвимый контракт жертвы
  • Вызывает функцию withdraw — жертва отправляет 1 ETH обратно
  • При получении ETH срабатывает fallback атакующего, который снова зовёт withdraw
  • Жертва ещё не обновила баланс — отправляет ещё 1 ETH; цикл повторяется, пока контракт не опустеет
⚠️ Риск для DeFi-вкладчиков

Не клади средства в DeFi-протоколы без публичного аудита от Trail of Bits, OpenZeppelin, CertiK или ConsenSys Diligence. Reentrancy — простая в эксплуатации уязвимость, и форки старых протоколов часто наследуют её. Аудит — обязательный фильтр.

Защиты от Reentrancy

Разработчики используют проверенные паттерны.

  • Checks-Effects-Interactions — сначала проверки, потом изменение состояния, потом внешний вызов
  • ReentrancyGuard от OpenZeppelin — модификатор nonReentrant блокирует повторный вход
  • Mutex — установка флага «я внутри функции» до операций и сброс после
  • Pull over Push — пользователь сам забирает средства, контракт не отправляет автоматически
  • Slither, MythX — статический анализ обнаруживает Reentrancy за минуты
  • Аудит от Trail of Bits, OpenZeppelin, CertiK — ручной обзор кода
💡 Совет

Перед депозитом в новый DeFi-протокол открой Etherscan, найди верифицированный исходник контракта и поищи строку «nonReentrant» или «ReentrancyGuard». Если её нет — задавай вопросы в Discord проекта. Команда без аудита и без модификаторов nonReentrant — красный флаг.

Знаменитые случаи Reentrancy

  • The DAO (2016) — украдено 3,6 млн ETH (60 млн долларов), привело к форку Ethereum на ETH/ETC
  • Lendf.Me (2020) — потеряно 25 млн долларов через ERC-777 reentrancy
  • Cream Finance (2021) — 130 млн долларов через cross-function reentrancy
  • Siren Protocol (2021) — потеряно 3,5 млн долларов
  • Burgerswap (2021) — украдено 7,2 млн долларов
  • Fei Protocol (2022) — потеряно 80 млн долларов через read-only reentrancy

Что нужно знать новичку

  • Reentrancy — самая известная уязвимость в истории смарт-контрактов
  • Защита есть, она простая — но многие новые форки забывают её внедрять
  • Перед использованием DeFi-протокола проверяй наличие аудита и репутацию команды
  • Топовые DEX (Uniswap, Aave, Compound) с аудитами Trail of Bits и OpenZeppelin — безопасны
  • Малые форки и yield-фермы с APY 500%+ часто содержат уязвимости — большая часть таких rug pull начинается с Reentrancy
  • Никогда не давай неограниченный approve неизвестному контракту