В последнее время протокол Cork на Эфире подвергся атаке, злоумышленники воспользовались логической уязвимостью контракта проекта (недостаточная проверка ключевых параметров) и получили прибыль в 12 миллионов долларов. В этой статье проведен детальный анализ данного инцидента и отслеживание средств.
Автор: Beosin
Недавно был атакован протокол Cork на цепочке Ethereum, в результате чего злоумышленник получил прибыль в размере $12 млн за счет логической уязвимости в контракте проекта (ключевые параметры не были проверены). Команда безопасности Beosin провела подробный анализ и финансовое отслеживание атаки, а также поделилась результатами следующим образом:
Подробные шаги атаки
Прежде чем анализировать атаку, нам нужно понять специальную бизнес-логику Cork Protocol. Он вводит механизм свопа кредитного дефолта, аналогичный традиционным финансам (называемый Depeg Swap), который токенизирует риск депривязки привязанных активов (таких как stETH), и пользователи могут хеджировать или торговать риском депривязки привязанных активов. Виды токенов бывают:
Актив на выкуп (Redemption Asset, RA): базовый актив (например, Эфир)
Привязанный актив (Pegged Asset, PA): актив, привязанный к базовому активу (например, stETH)
Depeg Swaps (DS): похожи на пут-опционы, хеджирующие падение цен
Покрывающий токен (Cover Token, CT) — аналог опциона колл, если не произошло отклонение, можно заработать; в случае отклонения нужно будет понести убытки.
Когда пользователи вносят RA, Cork Protocol выпускает токены DS и CT, которые могут быть использованы для торговли или выкупа для ставок или хеджирования рисков.
Атака затрагивает реальный рынок токенов и фальшивый рынок, созданный злоумышленниками:
!
(1) Нападающий сначала создал фиктивный рынок, где RA представляет собой токен weETH8DS-2, а PA - wstETH. Следует отметить, что weETH8DS-2 изначально был DS на реальном рынке, но может быть RA на фиктивном рынке, что должно быть запрещено проверкой токенов между рынками.
!
(2) Атакующий покупает weETH8CT-2 на реальном рынке.
!
(3) злоумышленник воспользовался отсутствием должного контроля доступа к функции beforeSwap в функции CorkHook для отправки пользовательских данных Hook функции CorkCall, заставив ее разделить свой weETH8DS-2 на fake_DS и fake_CT. Это возможно потому, что weETH8DS-2 является РА фейкового рынка, и функция считает фейк_DS и фейк_CT принадлежащими злоумышленникам.
!
(4) fake_DS и fake_CT токены были переданы атакующему, после чего, согласно правилам Cork Protocol: токены DS и CT могут быть обменены на токены RA. Атакующий обменял полученные токены fake_DS и fake_CT на weETH8DS-2 через виртуальный рынок.
(5) В настоящее время злоумышленник обладает weETH8CT-2, купленным на шаге 2, и собранным weETH8DS-2, который можно обменять на RA (т.е. wstETH) на реальном рынке.
Таким образом, злоумышленник может перевести ликвидность DS реального рынка на другой рынок (построенный фиктивный рынок) для выкупа в качестве RA, тем самым извлекая ликвидность RA с реального рынка. Злоумышленник украл 3761 wstETH в этом инциденте и обменял их на ETH на сумму около 12 миллионов долларов.
Анализ уязвимостей
Через вышеуказанный процесс атаки мы можем увидеть, что причины уязвимости всего события заключаются в следующих трех пунктах:
Отсутствует проверка: не проверено, использовался ли DS, используемый в качестве RA, на других рынках.
CorkCall данные обратного вызова, предоставленные доверенными пользователями без должной проверки.
Данный протокол позволяет создавать непроверенные и неограниченные рынки.
Хотя Cork Protocol прошел множество аудитов безопасности и конкурсов по аудиту, эта уязвимость на логическом уровне была упущена. Если бы к повторному использованию токенов применялись более строгие проверки, строгое подтверждение данных обратного вызова и более жесткий контроль за созданием рынка, эту атаку можно было бы избежать.
Отслеживание украденных средств
Beosin Trace обнаружил следы украденных средств: адрес нападающего 0xea6f30e360192bae715599e15e2f765b49e4da98 получил прибыль около 3761 wstETH, затем через DeFi-протоколы, такие как Uniswap и 1inch, обменял wstETH на ETH, в общей сложности 4530.6.
В настоящее время похищенные средства еще не были переведены. Beosin Trace добавил адреса, связанные с хакерами, в черный список адресов и будет продолжать отслеживание.
!
Согласно анализу Beosin Trace, все украденные средства все еще находятся на адресе атакующего.
Резюме
В основе атаки лежала уязвимость основной бизнес-логики в протоколе Cork, которая привела к тому, что злоумышленник украл большое количество wstETH с помощью поддельных токенов. Сложные протоколы DeFi, такие как Cork Protocol, требуют детального тестирования и анализа бизнес-логики контракта с помощью многогранного и многоуровневого аудита безопасности. Ранее команда безопасности Beosin завершила аудит безопасности нескольких протоколов DeFi (например, Surf Protocol, SyncSwap, LeverFi, Owlto Finance), сосредоточившись на поиске недостатков логики контрактов и пограничных случаев, которые могут быть упущены из виду, обеспечивая полное тестирование протокола.
Посмотреть Оригинал
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
Разбор уязвимости|Анализ инцидента кражи 12 миллионов долларов по Протоколу Cork и отслеживание средств
Автор: Beosin
Недавно был атакован протокол Cork на цепочке Ethereum, в результате чего злоумышленник получил прибыль в размере $12 млн за счет логической уязвимости в контракте проекта (ключевые параметры не были проверены). Команда безопасности Beosin провела подробный анализ и финансовое отслеживание атаки, а также поделилась результатами следующим образом:
Подробные шаги атаки
Прежде чем анализировать атаку, нам нужно понять специальную бизнес-логику Cork Protocol. Он вводит механизм свопа кредитного дефолта, аналогичный традиционным финансам (называемый Depeg Swap), который токенизирует риск депривязки привязанных активов (таких как stETH), и пользователи могут хеджировать или торговать риском депривязки привязанных активов. Виды токенов бывают:
Актив на выкуп (Redemption Asset, RA): базовый актив (например, Эфир)
Привязанный актив (Pegged Asset, PA): актив, привязанный к базовому активу (например, stETH)
Depeg Swaps (DS): похожи на пут-опционы, хеджирующие падение цен
Покрывающий токен (Cover Token, CT) — аналог опциона колл, если не произошло отклонение, можно заработать; в случае отклонения нужно будет понести убытки.
Когда пользователи вносят RA, Cork Protocol выпускает токены DS и CT, которые могут быть использованы для торговли или выкупа для ставок или хеджирования рисков.
Атака затрагивает реальный рынок токенов и фальшивый рынок, созданный злоумышленниками:
!
(1) Нападающий сначала создал фиктивный рынок, где RA представляет собой токен weETH8DS-2, а PA - wstETH. Следует отметить, что weETH8DS-2 изначально был DS на реальном рынке, но может быть RA на фиктивном рынке, что должно быть запрещено проверкой токенов между рынками.
!
(2) Атакующий покупает weETH8CT-2 на реальном рынке.
!
(3) злоумышленник воспользовался отсутствием должного контроля доступа к функции beforeSwap в функции CorkHook для отправки пользовательских данных Hook функции CorkCall, заставив ее разделить свой weETH8DS-2 на fake_DS и fake_CT. Это возможно потому, что weETH8DS-2 является РА фейкового рынка, и функция считает фейк_DS и фейк_CT принадлежащими злоумышленникам.
!
(4) fake_DS и fake_CT токены были переданы атакующему, после чего, согласно правилам Cork Protocol: токены DS и CT могут быть обменены на токены RA. Атакующий обменял полученные токены fake_DS и fake_CT на weETH8DS-2 через виртуальный рынок.
(5) В настоящее время злоумышленник обладает weETH8CT-2, купленным на шаге 2, и собранным weETH8DS-2, который можно обменять на RA (т.е. wstETH) на реальном рынке.
Таким образом, злоумышленник может перевести ликвидность DS реального рынка на другой рынок (построенный фиктивный рынок) для выкупа в качестве RA, тем самым извлекая ликвидность RA с реального рынка. Злоумышленник украл 3761 wstETH в этом инциденте и обменял их на ETH на сумму около 12 миллионов долларов.
Анализ уязвимостей
Через вышеуказанный процесс атаки мы можем увидеть, что причины уязвимости всего события заключаются в следующих трех пунктах:
Отсутствует проверка: не проверено, использовался ли DS, используемый в качестве RA, на других рынках.
CorkCall данные обратного вызова, предоставленные доверенными пользователями без должной проверки.
Данный протокол позволяет создавать непроверенные и неограниченные рынки.
Хотя Cork Protocol прошел множество аудитов безопасности и конкурсов по аудиту, эта уязвимость на логическом уровне была упущена. Если бы к повторному использованию токенов применялись более строгие проверки, строгое подтверждение данных обратного вызова и более жесткий контроль за созданием рынка, эту атаку можно было бы избежать.
Отслеживание украденных средств
Beosin Trace обнаружил следы украденных средств: адрес нападающего 0xea6f30e360192bae715599e15e2f765b49e4da98 получил прибыль около 3761 wstETH, затем через DeFi-протоколы, такие как Uniswap и 1inch, обменял wstETH на ETH, в общей сложности 4530.6.
В настоящее время похищенные средства еще не были переведены. Beosin Trace добавил адреса, связанные с хакерами, в черный список адресов и будет продолжать отслеживание.
!
Согласно анализу Beosin Trace, все украденные средства все еще находятся на адресе атакующего.
Резюме
В основе атаки лежала уязвимость основной бизнес-логики в протоколе Cork, которая привела к тому, что злоумышленник украл большое количество wstETH с помощью поддельных токенов. Сложные протоколы DeFi, такие как Cork Protocol, требуют детального тестирования и анализа бизнес-логики контракта с помощью многогранного и многоуровневого аудита безопасности. Ранее команда безопасности Beosin завершила аудит безопасности нескольких протоколов DeFi (например, Surf Protocol, SyncSwap, LeverFi, Owlto Finance), сосредоточившись на поиске недостатков логики контрактов и пограничных случаев, которые могут быть упущены из виду, обеспечивая полное тестирование протокола.