Взлом UniLend на сумму 200 тыс. долларов: что пошло не так и как DeFi может сделать лучше

Средний1/22/2025, 4:23:33 PM
UniLend был использован из-за уязвимости, что привело к краже примерно 200 тыс. долларов (4% от TVL). Атакующий использовал мгновенный кредит, чтобы внести 60 миллионов USDC, манипулировал расчетами залогов и эксплуатировал ошибку контракта в процессе проверки состояния, чтобы увеличить стоимость залога, изъяв 60 stETH. Недочет произошел из-за неправильной реализации функции userBalanceOfToken. UniLend затем устранил проблему, приостановил депозиты V2 и предложил вознаграждение за возврат средств. Этот инцидент подчеркивает критическое значение безопасности для платформ DeFi и необходимость тщательных аудитов смарт-контрактов.

Введение в UniLend

@UniLend_Financeэто протокол децентрализованного денежного рынка без разрешения с услугами кредитования и заимствования через смарт-контракты.

UniLend позволяет пользователям использовать свои криптовалюты, предоставляя залог в сети, который может быть заемным путем заложения переколлатерализованных криптовалют. Это создает безопасную среду для кредитования, где кредитор получает ежегодную сложную процентную ставку (APY), начисляемую за каждый блок, в то время как заемщик платит проценты по заемной криптовалюте.

Как работает UniLend

Протокол UniLend V2 функционирует благодаря трём основным техническим компонентам:

1.Модель двойного активного пула

UniLend использует изолированные двойные пулы активов для каждой пары ERC20/ERC20-совместимых токенов. Этот дизайн гарантирует, что производительность или волатильность одного актива не влияют на другие, повышая безопасность и стабильность. Архитектура позволяет любому пользователю создавать и управлять пулами кредитования и заимствования для широкого спектра активов на различных блокчейнах.

2. Поставка и займы

  • Поставка: Пользователи вносят токены ERC20 в специальные пулы и получают Non-Fungible Tokens (NFTs), которые представляют их уникальные позиции ликвидности. Эти NFT хранят информацию о поставленных активах и могут быть переданы или погашены по необходимости. Поставленные активы получают переменный процентный доход на основе использования пула и спроса на рынке.
  • Заем: Чтобы взять взаймы, пользователи должны предоставить переколлатерализованные криптовалюты. Протокол обеспечивает соблюдение коэффициентов обеспеченности, регулируемых через управление. Заемные суммы начисляют проценты за каждый блок, определяемые уровнем использования пула, обеспечивая сохранение адекватной обеспеченности кредитов.

3. Модель процентной ставки

UniLend использует динамическую модель процентной ставки на основе коэффициента использования пула (U), рассчитанного следующим образом:

Ux=BorrowxBorrowx+Cashx

Процентная ставка по займу:

Процентная ставка по займамx=10%+(Ux×30%)

Ставки растут с увеличением использования для балансировки спроса и предложения.

  • Процентная ставка по предложению:

Коэффициент процента поставки = Коэффициент процента по займу × Ux × (1−S)

Это обеспечивает поставщикам устойчивую прибыль, в то время как протокол остается прибыльным.

Эти компоненты работают вместе для создания безопасного, эффективного и масштабируемого децентрализованного денежного рынка.

Анализ атаки

12 января 2025 года была использована уязвимость в протоколе UniLend, что привело к потере около 200 000 долларов из пула UniLend. Злоумышленник манипулировал расчетами залога, что неправильно оценило фактор здоровья пользователя. Эта уязвимость позволила злоумышленнику снять 60 токенов stETH без должной обеспеченности.

Украденные активы включали 60 токенов stETH, используя неправильные расчеты балансов пользовательских токенов протокола.

Подробное разбиение атаки

1. Инициализация эксплойта

Атакующий инициировал эксплуатацию, используя флеш-кредит для внесения огромного количества USDC в пул UniLend. Конкретно, они внесли 60 миллионов USDC, значительно увеличив свое залоговое обеспечение внутри пула.

Flash-кредиты позволяют пользователям занимать большие суммы активов без обеспечения, при условии, что заемная сумма возвращается в том же транзакции.

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

2. Манипуляция расчетами залоговых средств

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

Корень этого манипулирования заключается в функции userBalanceOfToken. В ситуациях, когда пул имеет значительную ликвидность, эта функция может возвращать высокий lendBalance, даже если остается только небольшая доля lend. Это завышение баланса пользователя давало злоумышленнику иллюзию наличия большего залога, чем у него на самом деле было. Следовательно, злоумышленник мог занимать токены stETH сверх своего законного права на основе его фактического залога.

3. Выкуп подлежащих активов

С завышенной стоимостью залога злоумышленник продолжил выкупать свои USDC и stETH. Была вызвана функция redeemUnderlying, которая сжигала токены LP, связанные с депозитом пользователя. Однако из-за недостатков проверки фактора здоровья, происходящей перед передачей токенов, система считала, что у пользователя достаточно залога для снятия большего, чем он имел право. Этот недочет позволил злоумышленнику снять 60 токенов stETH без поддержания необходимого залога, фактически получив эти токены бесплатно.

Как можно было предотвратить атаку

Чтобы предотвратить атаку, UniLend должен был переупорядочить операции внутри функции redeemUnderlying. Проверка фактора здоровья должна выполняться после передачи токенов пользователю, чтобы протокол гарантировал точность отображения фактического баланса токенов пользователя, отражающего его статус залога.

Безопасность блокчейна не является вариантом на выбор. Защитите свои умные контракты и протоколы DeFi с помощью Three Sigma, надежного партнера по обеспечению безопасности в блокчейн-аудитах, оценке уязвимостей умных контрактов и безопасности Web3.

Нажмите, чтобыПолучите аудит вашего умного контракта сегодня.

Последствия

Эксплуатация UniLend привела к значительным финансовым потерям, составившим около $200 000 из пула UniLend. Эти значительные потери непосредственно повлияли на резервы платформы и снизили доступную ликвидность для других пользователей, что потенциально может нарушить текущие активности по кредитованию и заимствованию.

Ответ протокола UniLend

После эксплуатации UniLend немедленно принял меры по устранению уязвимости и заверил свою пользовательскую базу.

Они объявили награду в 20% ответственной стороне за безопасное возвращение средств.

Адреса

Атака транзакции:

Адрес эксплойтера:

Адрес UnilendV2Core:

Отказ от ответственности:

  1. Эта статья взята из [ X]. Все авторские права принадлежат оригинальному автору [@threesigmaxyz]. Если есть возражения против этой публикации, пожалуйста, свяжитесь с Gate Learnкоманда, и они быстро разберутся с этим.
  2. Ответственность за отказ: Взгляды и мнения, выраженные в этой статье, являются исключительно точкой зрения автора и не составляют инвестиционного совета.
  3. Команда Learn Gate переводит статьи на другие языки. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Взлом UniLend на сумму 200 тыс. долларов: что пошло не так и как DeFi может сделать лучше

Средний1/22/2025, 4:23:33 PM
UniLend был использован из-за уязвимости, что привело к краже примерно 200 тыс. долларов (4% от TVL). Атакующий использовал мгновенный кредит, чтобы внести 60 миллионов USDC, манипулировал расчетами залогов и эксплуатировал ошибку контракта в процессе проверки состояния, чтобы увеличить стоимость залога, изъяв 60 stETH. Недочет произошел из-за неправильной реализации функции userBalanceOfToken. UniLend затем устранил проблему, приостановил депозиты V2 и предложил вознаграждение за возврат средств. Этот инцидент подчеркивает критическое значение безопасности для платформ DeFi и необходимость тщательных аудитов смарт-контрактов.

Введение в UniLend

@UniLend_Financeэто протокол децентрализованного денежного рынка без разрешения с услугами кредитования и заимствования через смарт-контракты.

UniLend позволяет пользователям использовать свои криптовалюты, предоставляя залог в сети, который может быть заемным путем заложения переколлатерализованных криптовалют. Это создает безопасную среду для кредитования, где кредитор получает ежегодную сложную процентную ставку (APY), начисляемую за каждый блок, в то время как заемщик платит проценты по заемной криптовалюте.

Как работает UniLend

Протокол UniLend V2 функционирует благодаря трём основным техническим компонентам:

1.Модель двойного активного пула

UniLend использует изолированные двойные пулы активов для каждой пары ERC20/ERC20-совместимых токенов. Этот дизайн гарантирует, что производительность или волатильность одного актива не влияют на другие, повышая безопасность и стабильность. Архитектура позволяет любому пользователю создавать и управлять пулами кредитования и заимствования для широкого спектра активов на различных блокчейнах.

2. Поставка и займы

  • Поставка: Пользователи вносят токены ERC20 в специальные пулы и получают Non-Fungible Tokens (NFTs), которые представляют их уникальные позиции ликвидности. Эти NFT хранят информацию о поставленных активах и могут быть переданы или погашены по необходимости. Поставленные активы получают переменный процентный доход на основе использования пула и спроса на рынке.
  • Заем: Чтобы взять взаймы, пользователи должны предоставить переколлатерализованные криптовалюты. Протокол обеспечивает соблюдение коэффициентов обеспеченности, регулируемых через управление. Заемные суммы начисляют проценты за каждый блок, определяемые уровнем использования пула, обеспечивая сохранение адекватной обеспеченности кредитов.

3. Модель процентной ставки

UniLend использует динамическую модель процентной ставки на основе коэффициента использования пула (U), рассчитанного следующим образом:

Ux=BorrowxBorrowx+Cashx

Процентная ставка по займу:

Процентная ставка по займамx=10%+(Ux×30%)

Ставки растут с увеличением использования для балансировки спроса и предложения.

  • Процентная ставка по предложению:

Коэффициент процента поставки = Коэффициент процента по займу × Ux × (1−S)

Это обеспечивает поставщикам устойчивую прибыль, в то время как протокол остается прибыльным.

Эти компоненты работают вместе для создания безопасного, эффективного и масштабируемого децентрализованного денежного рынка.

Анализ атаки

12 января 2025 года была использована уязвимость в протоколе UniLend, что привело к потере около 200 000 долларов из пула UniLend. Злоумышленник манипулировал расчетами залога, что неправильно оценило фактор здоровья пользователя. Эта уязвимость позволила злоумышленнику снять 60 токенов stETH без должной обеспеченности.

Украденные активы включали 60 токенов stETH, используя неправильные расчеты балансов пользовательских токенов протокола.

Подробное разбиение атаки

1. Инициализация эксплойта

Атакующий инициировал эксплуатацию, используя флеш-кредит для внесения огромного количества USDC в пул UniLend. Конкретно, они внесли 60 миллионов USDC, значительно увеличив свое залоговое обеспечение внутри пула.

Flash-кредиты позволяют пользователям занимать большие суммы активов без обеспечения, при условии, что заемная сумма возвращается в том же транзакции.

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

2. Манипуляция расчетами залоговых средств

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

Корень этого манипулирования заключается в функции userBalanceOfToken. В ситуациях, когда пул имеет значительную ликвидность, эта функция может возвращать высокий lendBalance, даже если остается только небольшая доля lend. Это завышение баланса пользователя давало злоумышленнику иллюзию наличия большего залога, чем у него на самом деле было. Следовательно, злоумышленник мог занимать токены stETH сверх своего законного права на основе его фактического залога.

3. Выкуп подлежащих активов

С завышенной стоимостью залога злоумышленник продолжил выкупать свои USDC и stETH. Была вызвана функция redeemUnderlying, которая сжигала токены LP, связанные с депозитом пользователя. Однако из-за недостатков проверки фактора здоровья, происходящей перед передачей токенов, система считала, что у пользователя достаточно залога для снятия большего, чем он имел право. Этот недочет позволил злоумышленнику снять 60 токенов stETH без поддержания необходимого залога, фактически получив эти токены бесплатно.

Как можно было предотвратить атаку

Чтобы предотвратить атаку, UniLend должен был переупорядочить операции внутри функции redeemUnderlying. Проверка фактора здоровья должна выполняться после передачи токенов пользователю, чтобы протокол гарантировал точность отображения фактического баланса токенов пользователя, отражающего его статус залога.

Безопасность блокчейна не является вариантом на выбор. Защитите свои умные контракты и протоколы DeFi с помощью Three Sigma, надежного партнера по обеспечению безопасности в блокчейн-аудитах, оценке уязвимостей умных контрактов и безопасности Web3.

Нажмите, чтобыПолучите аудит вашего умного контракта сегодня.

Последствия

Эксплуатация UniLend привела к значительным финансовым потерям, составившим около $200 000 из пула UniLend. Эти значительные потери непосредственно повлияли на резервы платформы и снизили доступную ликвидность для других пользователей, что потенциально может нарушить текущие активности по кредитованию и заимствованию.

Ответ протокола UniLend

После эксплуатации UniLend немедленно принял меры по устранению уязвимости и заверил свою пользовательскую базу.

Они объявили награду в 20% ответственной стороне за безопасное возвращение средств.

Адреса

Атака транзакции:

Адрес эксплойтера:

Адрес UnilendV2Core:

Отказ от ответственности:

  1. Эта статья взята из [ X]. Все авторские права принадлежат оригинальному автору [@threesigmaxyz]. Если есть возражения против этой публикации, пожалуйста, свяжитесь с Gate Learnкоманда, и они быстро разберутся с этим.
  2. Ответственность за отказ: Взгляды и мнения, выраженные в этой статье, являются исключительно точкой зрения автора и не составляют инвестиционного совета.
  3. Команда Learn Gate переводит статьи на другие языки. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!