Penpie подвергся атаке, результатом которой стали потери в 30 миллионов долларов

user avatar

от Giorgi Kostiuk

2 years ago

Сделано с помощью ИИ


  1. Предварительная информация
  2. Коренная причина
  3. Анализ атаки

  4. 4 сентября 2024 года децентрализованный проект Penpie по предоставлению ликвидности подвергся атаке, в результате которой утрачено почти 30 миллионов долларов. Команда безопасности SlowMist провела анализ этого инцидента.

    Предварительная информация

    Pendle Finance — это децентрализованный протокол торговли доходностью с общей заблокированной стоимостью (TVL) свыше 4,5 миллиардов долларов. Протокол успешно интегрируется с Magpie для оптимизации возможностей получения дохода и улучшения модели veTokenomics. На основе этого, Penpie вводит функцию майнинга ликвидности, позволяя торговым площадкам Pendle Finance генерировать пассивный доход.

    Некоторые важные концепции в Pendle Finance:

    - **PT (Principal Token)**: Представляет основную сумму на будущую дату. Держатель PT имеет право на получение основной суммы по истечении срока; например, владение годовым PT-стETH позволяет обменять его на эквивалент 1 ETH в stETH через год. - **YT (Yield Token)**: Представляет будущий доход. Держатель YT имеет право на все доходы, генерируемые базовым активом в реальном времени, которые можно в любое время вручную получить на Pendle. Например, если вы держите 1 YT-stETH и средняя доходность stETH составляет 5%, вы получите 0,05 stETH к концу года. - **SY (Simple Yield)**: Контракт для обертывания любого токена, приносящего доход, предоставляющий стандартизированный интерфейс для взаимодействия с любым механизмом генерации доходов. - **LPT (Liquidity Provider Token)**: Представляет собой рынок ликвидности и служит сертификатом за предоставление ликвидности базового актива. - **PRT (Pool Reward Token)**: Представляет собой депозитный сертификат для пользователей, которые вносят токены LPT в пул Penpie.

    Коренная причина

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

    Анализ атаки

    ### Подготовка Хэш транзакции: 0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1

    1. Злоумышленник сначала создал контракты доходности PT и YT через функцию `createYieldContract` контракта `PendleYieldContractFactory`, установив SY на адрес зловредного контракта. Используя это, они вызвали функцию `createNewMarket` контракта `PendleMarketFactoryV3` для создания соответствующего контракта рынка (0x5b6c_PENDLE-LPT).

    2. Затем злоумышленник зарегистрировал пул Penpie через функцию `registerPenpiePool` контракта `PendleMarketRegisterHelper`. Этот процесс создал контракт токена PRT и связанный контракт вознаграждений, а также зарегистрировал информацию о пуле в Penpie.

    3. Злоумышленник затем выпустил большое количество токенов YT и PT, вызвав функцию `mintPY` контракта YT, с количеством, зависящим от обменного курса, возвращаемого зловредным контрактом SY.

    4. Злоумышленник вложил PT в рынок 0x5b6c_PENDLE-LPT и выпустил токены LP.

    5. В итоге злоумышленник внес токены LP в пул Penpie в обмен на депозитные токены PRT.

    ### Выполнение атаки Хэш транзакции: 0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5

    1. Злоумышленник начал с заимствования большого количества токенов agETH и rswETH через флэш-кредиты.

    2. Затем они вызвали функцию `batchHarvestMarketRewards` пула Penpie для сбора вознаграждений за указанный рынок в массовом порядке, что вызвало функцию `redeemRewards` контракта рынка 0x5b6c_PENDLE-LPT.

    3. Функция `redeemRewards` внешне вызвала функцию `claimRewards` контракта SY (зловредного контракта). В этот период злоумышленник использовал средства из флэш-кредита для увеличения ликвидности токенов вознаграждений (зловредный контракт умышленно установил токены вознаграждений на два рыночных токена: 0x6010_PENDLE-LPT и 0x038c_PENDLE-LPT) и внёс полученные рыночные токены в пул Penpie для получения соответствующих депозитных сертификатов.

    4. Эти вновь внесённые рыночные токены в пул Penpie были рассчитаны как вознаграждения, которые затем были переданы в контракт вознаграждений с использованием функции `queueNewRewards` контракта Rewarder.

    Так как злоумышленник был единственным вкладчиком в рынок 0x5b6c_PENDLE-LPT, они могли незамедлительно вызвать функцию `multiclaim` контракта MasterPenpie для вывода этих токенов LP из контракта Rewarder.

    5. В итоге злоумышленник использовал функцию `withdrawMarket` контракта `PendleMarketDepositHelper` для сжигания депозитных токенов PRT, полученных на третьем шаге, для выкупа рыночных токенов и удаления ликвидности вместе с вознаграждениями, полученными на предыдущем шаге, что в конечном итоге привело к получению базовых активных токенов (agETH и rswETH) и получению прибыли.

    Этот инцидент безопасности выявил отсутствие проверки при регистрации рынка Penpie, чрезмерное доверие к логике создания рынка Pendle Finance, что позволило злоумышленнику манипулировать механизмом распределения вознаграждений через зловредные контракты для получения избыточных вознаграждений. Команда безопасности SlowMist рекомендует проектным командам внедрить более строгие механизмы проверки белых списков при регистрации рынка, чтобы гарантировать принятие только проверенных рынков. Кроме того, критическая логика, связанная с внешними вызовами контрактов, должна проходить более тщательные аудиты и тестирование на безопасность, чтобы предотвратить подобные инциденты в будущем.

Тир I

Сектор: #18291

Запечатанная комната тайников

Resource Cache

Resource Cache

Тир I

Нужно 25% прогресса тира
Meme Cache

Meme Cache

Тир I

Нужно 50% прогресса тира
Equipment Cache

Equipment Cache

Тир I

Нужно 75% прогресса тира

После получения тайники попадут в инвентарь — открыть их можно ключами.

Другие новости

Запуск трейлера GTA 6 вызывает интерес к Dacity Coin

Запуск трейлера GTA 6 вызывает интерес к Dacity Coin

user avatarЭмиль Юнусов

Офис контролера валюты утвердил правила для эмитентов стейблкоинов в рамках Закона GENIUS

Офис контролера валюты утвердил правила для эмитентов стейблкоинов в рамках Закона GENIUS.

user avatarАнна Сидорова

Кен Кутараги отвечает на критику фанатов по поводу прекращения производства физических дисков

Основатель PlayStation Кен Кутараги прокомментировал недовольство фанатов по поводу решения Sony прекратить производство физических дисков.

user avatarНаталья Ахметова

Эксперты обсуждают влияние прекращения производства дисков на игровую индустрию

Игровые эксперты обсуждают последствия прекращения производства физических дисков и изменения отношения к играм.

user avatarМарина Петренко

Банки Великобритании вводят ограничения на переводы в криптобиржи

Некоторые банки Великобритании установили лимиты на переводы в криптобиржи, что вызывает недовольство клиентов.

user avatarЕлена Климова

Британские банки получили более 10,000 жалоб на блокировку переводов в криптобиржи

Клиенты банков Великобритании подали 10,092 жалобы на блокировку или ограничение переводов в криптобиржи за 90 дней.

user avatarДарья Гасанова

Важное примечание: Информация, представленная на портале Dapp.Expert, предназначена исключительно для ознакомительных целей и не является рекомендацией к инвестициям или руководством к действию. Команда Dapp.Expert не несет ответственности за возможные убытки или упущенную выгоду, связанные с использованием материалов, опубликованных на сайте. Перед принятием инвестиционных решений рекомендуем проконсультироваться с квалифицированным финансовым советником.