Сообщалось об уязвимостях в версиях Vyper 0.2.15, 0.2.16 и 0.3.0, из-за чего многие пулы в Curve подвергались риску повторных атак. Эта уязвимость позволяет злоумышленнику вызвать функцию добавления ликвидности в процессе удаления ликвидности.
На данный момент пострадало в общей сложности 69,3 миллиона долларов, из которых 16,7 миллиона долларов были возвращены хакерами в белой шляпе. Это также означает, что в результате этого инцидента было украдено 52 миллиона долларов, что сделало его крупнейшей повторной атакой в 2023 году.
Сводка событий
30 июля 2023 года было объявлено, что версии 0.2.15, 0.2.16 и 0.3.0 компилятора Vyper, контрактно-ориентированного языка программирования, разработанного для виртуальной машины Ethereum (EVM), имеют уязвимости сбоя блокировки повторного входа. Ошибка затронула несколько проектов DeFi, общая сумма убытков составила 52 миллиона долларов.
CertiK определила шесть адресов, причастных к инциденту. Первый (0x172) не смог использовать уязвимость в блоке 17806056. Первоначальный эксплуататор снял 0,1 ETH с Tornado Cash и приступил к созданию контракта на атаку. Однако ведущий кошелек (0x6Ec21) заплатил больше за газ и выполнил транзакцию первым, заработав около 6100 WETH (11,4 миллиона долларов).
Уязвимость перед сбоем транзакции роботом MEV Источник: Etherscan Etherscan
Нарушение привело к дальнейшим потерям: EOA 0xDCe5d приобрела активы на сумму около 21 миллиона долларов. Детали задействованного кошелька следующие:
В общей сложности пострадало шесть проектов, было украдено около 69,3 миллиона долларов, из которых 16,7 миллиона долларов было возвращено, а общий убыток составил около 52 миллионов долларов.
Что такое Вайпер
Vyper — это контрактный язык программирования Python для виртуальной машины Ethereum (EVM). Vyper находится в стадии бета-тестирования с 2017 года, но его первым небета-релизом стала версия 0.2.1, выпущенная в июле 2020 года.
Solidity, доминирующий язык в экосистеме Ethereum, существует гораздо дольше, чем Vyper, поэтому многие члены сообщества создали инструменты, работающие исключительно с Solidity. Согласно данным DeFiLlama, из общей заблокированной стоимости (TVL), составляющей примерно 70 миллиардов долларов США в протоколах DeFi, на смарт-контракты Vyper приходится 2,17 миллиарда долларов США, в то время как на Solidity приходится подавляющее большинство, достигающее 67,49 миллиардов долларов США.
Общее заблокированное значение по источнику языка: DeFiLlama
По состоянию на 10 мая 2023 года доминирование Vyper упало с 30% в августе 2020 года до 6,27%. Несмотря на то, что доминирование Vyper в TVL было значительно ниже, чем у Solidity, событие все равно принесло прибыль в размере 62 миллионов долларов.
Доминирование разных языков программирования в ТВЛ Источник: DeFiLlama
Версия компилятора
Версия компилятора относится к конкретной версии компилятора языка программирования, который преобразует исходный код, читаемый человеком, в машиночитаемый код.
Версии компилятора регулярно обновляются, чтобы добавлять функции, исправлять ошибки и повышать безопасность. В настоящее время Vyper Language не предлагает программу вознаграждения за обнаружение хакерских ошибок.
Версия 0.2.15–0.3.0
Как упоминалось выше, уязвимости были обнаружены в версиях Vyper 0.2.15, 0.2.16 и 0.3.0, что привело к повторным атакам на несколько проектов DeFi.
Самая ранняя версия эксплойта Vyper 0.2.15 была выпущена 23 июля 2021 года. К моменту выпуска версии 0.3.1 в декабре того же года предыдущая уязвимость перестала существовать.
Лента новостей
Инцидент впервые начался в 21:10 по пекинскому времени 30 июля. Транзакция злоумышленника для пула JPEG на Curve не удалась из-за предварительных транзакций.
В 22:00 30 июля по пекинскому времени JPEG подтвердил злонамеренное использование пула pETH-ETH Curve.
Впоследствии Vyper объявил, что версии 0.2.15, 0.2.16 и 0.3.0 содержат сломанную блокировку повторного входа. Metronome и Alchemix также пострадали после того, как Vyper написал в Твиттере.
Анонс метронома DAO:
Рано утром второго дня по пекинскому времени Curve Finance объявила в Discord, что оставшийся пул средств не затронут ошибкой Vyper и находится в безопасности.
Curve Finance объявила в Твиттере, что пул на Arbitrum был потенциально скомпрометирован, но не было никаких выгодных эксплойтов для выполнения злоумышленниками, а это означает, что пул вряд ли будет скомпрометирован. CertiK также не обнаружил никаких других атак, использующих уязвимость Vyper.
Контракт атаки: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code
1 Злоумышленник сначала занимает 80 000 WETH (около 149 371 300 долларов США) у Balancer: Vault
2 Затем злоумышленник обменивает WETH на ETH, вызывает pETH-ETH-f.add_liquidity() и добавляет 40 000 ETH (около 74 685 650 долларов США) в пул pETH-ETH-f. Взамен злоумышленник получил 32 431 pETH (pETH-ETH-f).
3 Злоумышленник вызывает remove_liquidity(), чтобы удалить ликвидность, добавленную на шаге 2. 3 740 pETH и 34 316 ETH были переведены в контракт атаки, и сработала функция fallbak() контракта атаки, что дало контроль злоумышленнику. В функции fallback() злоумышленник добавил еще 40 000 ETH ликвидности в пул pETH-ETH-f и получил 82 182 pETH.
4 Злоумышленник снова вызывает remove_liquidity(), выводит 10 272pETH и получает 47 506 ETH и 1 184pETH. Затем злоумышленник обменял 4924 pETH на 4285 ETH в пуле pETH-ETH-f.
Всего злоумышленник получил 34 316 ETH на шаге 3, 47 506 и 4 285 ETH на шаге 4, всего 86 107 ETH. После погашения флэш-кредита в размере 80 000 ETH у злоумышленника осталось 6 107 ETH (~ 11 395 506 долларов США).
Уязвимости
Эта уязвимость позволяет злоумышленнику вызвать функцию добавления ликвидности в процессе удаления ликвидности. Хотя предполагается, что эти функции защищены с помощью @nonreentrant('lock'), тесты функций add_liquidty() и remove_liquidity() показали, что это не предотвращает повторные атаки.
Vyper_contract for Curve.fi Factory Pool Источник данных: Etherscan
Версии Vyper v0.2.15, v0.2.16 и v0.3.0 действительно имеют уязвимость отказа защиты от повторного входа после эксплойтов JPEG'd, Metronome и Alchemix.
решение
Проекты, использующие уязвимые версии Vyper, должны обращаться к Vyper за помощью в смягчении последствий. Проекты также должны попытаться выполнить обновление до последней версии Vyper, не содержащей этой уязвимости.
Подведем итог
Атака на Vyper — крупнейшая уязвимость повторного входа, обнаруженная CertiK в 2023 году. С точки зрения финансовых потерь на эту атаку пришлось 78,6% таких инцидентов.
Две крупнейшие уязвимости года, связанные с повторным входом, использовали контракты, написанные в Vyper, хотя уязвимости не были идентичными.
В настоящее время потери из-за повторных атак во всех цепочках в 2023 году превысили 66 миллионов долларов. Это примерно на 4 миллиона долларов больше, чем за весь 2020 год, и всего на 1 миллион долларов меньше, чем убыток 2021 года. Примечательно, что общая сумма за 2023 год также представляет собой увеличение на 259,45% потерь из-за перенацеливания атак в 2022 году.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
CertiK: подробное объяснение убытка Vyper в размере 52 миллионов долларов
Сообщалось об уязвимостях в версиях Vyper 0.2.15, 0.2.16 и 0.3.0, из-за чего многие пулы в Curve подвергались риску повторных атак. Эта уязвимость позволяет злоумышленнику вызвать функцию добавления ликвидности в процессе удаления ликвидности.
На данный момент пострадало в общей сложности 69,3 миллиона долларов, из которых 16,7 миллиона долларов были возвращены хакерами в белой шляпе. Это также означает, что в результате этого инцидента было украдено 52 миллиона долларов, что сделало его крупнейшей повторной атакой в 2023 году.
Сводка событий
30 июля 2023 года было объявлено, что версии 0.2.15, 0.2.16 и 0.3.0 компилятора Vyper, контрактно-ориентированного языка программирования, разработанного для виртуальной машины Ethereum (EVM), имеют уязвимости сбоя блокировки повторного входа. Ошибка затронула несколько проектов DeFi, общая сумма убытков составила 52 миллиона долларов.
CertiK определила шесть адресов, причастных к инциденту. Первый (0x172) не смог использовать уязвимость в блоке 17806056. Первоначальный эксплуататор снял 0,1 ETH с Tornado Cash и приступил к созданию контракта на атаку. Однако ведущий кошелек (0x6Ec21) заплатил больше за газ и выполнил транзакцию первым, заработав около 6100 WETH (11,4 миллиона долларов).
Уязвимость перед сбоем транзакции роботом MEV Источник: Etherscan Etherscan
Нарушение привело к дальнейшим потерям: EOA 0xDCe5d приобрела активы на сумму около 21 миллиона долларов. Детали задействованного кошелька следующие:
В общей сложности пострадало шесть проектов, было украдено около 69,3 миллиона долларов, из которых 16,7 миллиона долларов было возвращено, а общий убыток составил около 52 миллионов долларов.
Что такое Вайпер
Vyper — это контрактный язык программирования Python для виртуальной машины Ethereum (EVM). Vyper находится в стадии бета-тестирования с 2017 года, но его первым небета-релизом стала версия 0.2.1, выпущенная в июле 2020 года.
Solidity, доминирующий язык в экосистеме Ethereum, существует гораздо дольше, чем Vyper, поэтому многие члены сообщества создали инструменты, работающие исключительно с Solidity. Согласно данным DeFiLlama, из общей заблокированной стоимости (TVL), составляющей примерно 70 миллиардов долларов США в протоколах DeFi, на смарт-контракты Vyper приходится 2,17 миллиарда долларов США, в то время как на Solidity приходится подавляющее большинство, достигающее 67,49 миллиардов долларов США.
По состоянию на 10 мая 2023 года доминирование Vyper упало с 30% в августе 2020 года до 6,27%. Несмотря на то, что доминирование Vyper в TVL было значительно ниже, чем у Solidity, событие все равно принесло прибыль в размере 62 миллионов долларов.
Версия компилятора
Версия компилятора относится к конкретной версии компилятора языка программирования, который преобразует исходный код, читаемый человеком, в машиночитаемый код.
Версии компилятора регулярно обновляются, чтобы добавлять функции, исправлять ошибки и повышать безопасность. В настоящее время Vyper Language не предлагает программу вознаграждения за обнаружение хакерских ошибок.
Версия 0.2.15–0.3.0
Как упоминалось выше, уязвимости были обнаружены в версиях Vyper 0.2.15, 0.2.16 и 0.3.0, что привело к повторным атакам на несколько проектов DeFi.
Самая ранняя версия эксплойта Vyper 0.2.15 была выпущена 23 июля 2021 года. К моменту выпуска версии 0.3.1 в декабре того же года предыдущая уязвимость перестала существовать.
Лента новостей
Инцидент впервые начался в 21:10 по пекинскому времени 30 июля. Транзакция злоумышленника для пула JPEG на Curve не удалась из-за предварительных транзакций.
В 22:00 30 июля по пекинскому времени JPEG подтвердил злонамеренное использование пула pETH-ETH Curve.
Впоследствии Vyper объявил, что версии 0.2.15, 0.2.16 и 0.3.0 содержат сломанную блокировку повторного входа. Metronome и Alchemix также пострадали после того, как Vyper написал в Твиттере.
Анонс метронома DAO:
Рано утром второго дня по пекинскому времени Curve Finance объявила в Discord, что оставшийся пул средств не затронут ошибкой Vyper и находится в безопасности.
Curve Finance объявила в Твиттере, что пул на Arbitrum был потенциально скомпрометирован, но не было никаких выгодных эксплойтов для выполнения злоумышленниками, а это означает, что пул вряд ли будет скомпрометирован. CertiK также не обнаружил никаких других атак, использующих уязвимость Vyper.
Процесс атаки
Вот пример сделки с таргетингом на JPEG:
Злоумышленник: 0x6ec21d1868743a44318c3c259a6d4953f9978538
Контракт атаки: 0x466b85b49ec0c5c1eb402d5ea3c4b88864ea0f04#code
1 Злоумышленник сначала занимает 80 000 WETH (около 149 371 300 долларов США) у Balancer: Vault
2 Затем злоумышленник обменивает WETH на ETH, вызывает pETH-ETH-f.add_liquidity() и добавляет 40 000 ETH (около 74 685 650 долларов США) в пул pETH-ETH-f. Взамен злоумышленник получил 32 431 pETH (pETH-ETH-f).
3 Злоумышленник вызывает remove_liquidity(), чтобы удалить ликвидность, добавленную на шаге 2. 3 740 pETH и 34 316 ETH были переведены в контракт атаки, и сработала функция fallbak() контракта атаки, что дало контроль злоумышленнику. В функции fallback() злоумышленник добавил еще 40 000 ETH ликвидности в пул pETH-ETH-f и получил 82 182 pETH.
4 Злоумышленник снова вызывает remove_liquidity(), выводит 10 272pETH и получает 47 506 ETH и 1 184pETH. Затем злоумышленник обменял 4924 pETH на 4285 ETH в пуле pETH-ETH-f.
Всего злоумышленник получил 34 316 ETH на шаге 3, 47 506 и 4 285 ETH на шаге 4, всего 86 107 ETH. После погашения флэш-кредита в размере 80 000 ETH у злоумышленника осталось 6 107 ETH (~ 11 395 506 долларов США).
Уязвимости
Эта уязвимость позволяет злоумышленнику вызвать функцию добавления ликвидности в процессе удаления ликвидности. Хотя предполагается, что эти функции защищены с помощью @nonreentrant('lock'), тесты функций add_liquidty() и remove_liquidity() показали, что это не предотвращает повторные атаки.
Vyper_contract for Curve.fi Factory Pool Источник данных: Etherscan
Версии Vyper v0.2.15, v0.2.16 и v0.3.0 действительно имеют уязвимость отказа защиты от повторного входа после эксплойтов JPEG'd, Metronome и Alchemix.
решение
Проекты, использующие уязвимые версии Vyper, должны обращаться к Vyper за помощью в смягчении последствий. Проекты также должны попытаться выполнить обновление до последней версии Vyper, не содержащей этой уязвимости.
Подведем итог
Атака на Vyper — крупнейшая уязвимость повторного входа, обнаруженная CertiK в 2023 году. С точки зрения финансовых потерь на эту атаку пришлось 78,6% таких инцидентов.
Две крупнейшие уязвимости года, связанные с повторным входом, использовали контракты, написанные в Vyper, хотя уязвимости не были идентичными.
В настоящее время потери из-за повторных атак во всех цепочках в 2023 году превысили 66 миллионов долларов. Это примерно на 4 миллиона долларов больше, чем за весь 2020 год, и всего на 1 миллион долларов меньше, чем убыток 2021 года. Примечательно, что общая сумма за 2023 год также представляет собой увеличение на 259,45% потерь из-за перенацеливания атак в 2022 году.