В воскресенье несколько децентрализованных финансовых протоколов подверглись атаке злоумышленников, похитивших криптовалюту на сумму более 24 млн. долл. Злоумышленники воспользовались уязвимостью в пулах ликвидности на платформе Curve, автоматическом маркет-мейкере.
Уязвимость была обнаружена в Vyper, альтернативном стороннем языке программирования смарт-контрактов Ethereum, сообщает Curve в Twitter. По словам представителей Curve, с другими пулами ликвидности, не использующими этот язык, все в порядке.
В ряде пулов стабильности (alETH/msETH/pETH), использующих Vyper 0.2.15, произошла эксплуатация в результате неисправности блокировки реентерабельности. Мы оцениваем ситуацию и будем информировать сообщество по мере развития событий.
Другие пулы безопасны. https://t.co/eWy2d3cDDj
— Curve Finance (@CurveFinance) July 30, 2023
Пулы ликвидности — это смарт-контракты, в которых хранятся токены, и они могут обеспечить ликвидность криптовалютных рынков, не прибегая к услугам финансовых посредников. Но, как выяснилось в воскресенье, небольшой недостаток может привести к значительным потерям.
По данным компании Decurity, специализирующейся на безопасности децентрализованных финансов, из протокола NFT-кредитования JPEG’d была похищена криптовалюта на сумму 11 млн долларов США. JPEG’d одним из первых выявил проблему со своим пулом на Curve.
«Произошла атака», — говорится в сообщении JPEG’d в Twitter. «Мы изучаем проблему с того момента, как нам стало известно о ней, и […] проблема, похоже, связана с пулом Curve».
JPEG’d позволяет пользователям размещать НФТ в качестве залога по кредитам. С точки зрения активов, размещенных в JPEG’d, общая стоимость заблокированных средств (TVL) в протоколе составляет около 32 млн. долл. По словам представителей JPEG’d, код, отвечающий за хранение НФТ и казначейских средств, не пострадал.
По данным CoinGecko, на момент написания статьи управляющий токен протокола JPEG упал на 23%. В воскресенье монета достигла исторического минимума — 0,000347 долл.
В своем удаленном твите компания Curve первоначально описала уязвимость как обычную атаку «re-entrancy» на чтение, которой можно было избежать. Атака с повторным вхождением происходит, когда смарт-контракт взаимодействует с другим контрактом, который, в свою очередь, обращается к первому контракту перед полным выполнением.
Уязвимости реентерабельности позволяют злоумышленнику впихнуть несколько вызовов в одну функцию и обмануть смарт-контракт, заставив его вычислять неправильный баланс. Одним из наиболее ярких примеров стал взлом DAO на Ethereum стоимостью 55 млн долларов в 2016 году.
Однако, отвечая на сообщение в Twitter, которое позже повторило затертое заявление, компания Curve заявила, что ее первоначальное впечатление было ошибочным.
«Да, не только для чтения», — заявила компания Curve, добавив, что «никаких правонарушений со стороны проектов, интегрировавших vyper, или даже пользователей vyper не было.»
Да, не только для чтения. Никаких правонарушений со стороны интегрировавших проектов или даже пользователей вайпера здесь нет
— Curve Finance (@CurveFinance)July 30, 2023
Атаки на ретрансляцию — слишком распространенный вектор хищения протоколов злоумышленниками, заявил в интервью TCN Меир Долев, соучредитель и технический директор компании Cyvers, специализирующейся на кибербезопасности.
«Они довольно распространены», — сказал Долев. «И их можно избежать при правильном проектировании и разработке».
Проблема возникла не только с JPEG’d. По его словам, вскоре после того, как был использован протокол кредитования NFT, Alchemix и Metronome DAO потеряли 13,6 млн. долл. и 1,6 млн. долл. соответственно.
Alchemix признала в Twitter, что активно работает над устранением проблемы с пулом ликвидности. MetronomeDAO сообщила в Twitter, что ее расследование произошедшего продолжается, и назвала атаку «частью более широкого набора эксплойтов».
По словам Долева, в случае с JPEG’d атакующий был опережен ботом с максимальной извлекаемой стоимостью (MEV). Бот идентифицировал транзакцию потенциального злоумышленника и платил вознаграждение за выполнение аналогичной транзакции перед ним.
Компания Vyper сообщила в своем Twitter, что сбой произошел в компиляторе языка программирования. Когда разработчик заканчивает писать код, он компилируется из человекочитаемого формата в форму, которую могут выполнить компьютеры.
По словам Долева, это не позволило сработать защитам от повторного входа, которые были включены в код проектов и должны были защищать от атак повторного входа.
«Компилятор в некоторых версиях не смог скомпилировать его правильным образом», — сказал Долев. «В нем есть какие-то ошибки или сбои».