Кейс Hegic: опечатка на $48 000 или почему DeFi-протоколам нужны стандарты безопасности

В конце апреля неизвестная разработчица Молли Уинтермьют запустила DeFi-протокол Hegic. Она заказала аудит кода у известной фирмы Trail of Bits, но это не помогло избежать проблем. Уже спустя день после запуска банальная опечатка в одну букву в коде привела к потере почти $48 000 средств пользователей. Уинтермьют возвратила средства, перезапустила протокол и думает, что пользователи DeFi должны быть на полной готовности к рискам ради высокой прибыли. Инцидент с Hegic наглядно демонстрирует проблемы стандартов безопасности DeFi-протоколов: спешка в разработке и в аудите и, как следствие, потеря средств. Как происходил запуск Hegic, с какими проблемами столкнулась Уинтермьют и каких результатов ей удалось достичь к июлю?

 

 

Поспешный запуск Hegic

 

Hegic — DeFi-протокол торговли опционами, самостоятельно разработанный и запущенный сразу в мейннете анонимной программисткой Молли Уинтермьют.

 

Молли Уинтермьют в Twitter. Источник.

 

Главная идея проекта — максимально сделать проще работу с опционами как с финансовым инструментом. Опционные смарт-контракты дают право (но не обязательство) купить или продать определённый актив до конкретной даты или по согласованной цене. В принципе, опционные контракты — это ставка с привлечением заемных средств на то, будет ли цена актива идти вверх (колл-опцион) или вниз (пут-опцион) в течение конкретного периода времени. Hegic оказывает поддержку ETH, что позволяет любому пользователю получить доступ к заемной ставке на цену активов в любом направлении.

 

В Hegic любой пользователь имеет возможность продавать опционные контракты и зарабатывать премии в автоматическом режиме. Если контракт не выполняется и срок его действия истекает, продавцы (поставщики ликвидности) получают премию за продажу контракта и обязуются соблюдать цену исполнения, если она погашена.

 

Основное отличие Hegic от других похожих опцион-протоколов (например, Opyn) — коллективные риски при продаже контрактов. Традиционно, когда трейдеры продают опционный контракт, они рискуют средствами только в этом конкретном контракте. Но Hegic диверсифицирует этот риск по всем поставщикам ликвидности пула. Таким образом, продавцы разделяют риск и вознаграждение для всех контрактов, выпущенных из соответствующего пула.

 

В первый раз о работе над протоколом Уинтермьют объявила в начале января 2020 года. В начале февраля было выложено техническое описание проекта и запущен сайт. В марте первые пользователи начали тестировать Hegic.

 

Опечатка ценой в $48 000

 

В апреле Уинтермьют заказала аудит кода Hegic известной аудиторской компании Trail of Bits — протокол прошел проверку. Уверенная в его надёжности, 23 апреля разработчица запустила мейннет Hegic.

 

Но уже 24 апреля Уинтермьют была вынуждена перезапустить протокол. Причиной стала банальная опечатка в его коде — вместо функции «OptionsIDs», отвечающей за разблокировку ликвидности в истекших контрактах, была начертана несуществующая команда «OptionIDs» — без буквы «s». Ошибка привела к сбою, контракт оказался не исполненным и в результате средства пользователей на сумму $28 537 в ЕТН и DAI оказались заблокированы навсегда — в просроченных контрактах их разблокировать нельзя. Уинтермьют не могла исправить опечатку задним числом — протокол просто не предусматривал такой возможности.

 

Опечатка в коде Hegic, приведшая к потере средств пользователей. Источник.

 

Уинтермьют заприметила ошибку самостоятельно, предупредила об этом пользователей в Twitter, Discord и Telegram и скоро исправила опечатку. Она попросила активных держателей опционов реализовать свои контракты, чтобы избежать блокировки своих средств на контрактах пулов навсегда. Тем, кто успел установить связь с Уинтермьют, удалось возвратить средства, а остальным разработчица дала обещание полностью компенсировать потерянные активы. Уже на следующий день Уинтермьют выпустила подробный отчет и сообщила о трех ошибках, которые совершила при запуске Hegic:

 

 Решила, что исправление замечаний аудиторов гарантирует безопасность кода;

 

 Не провела автоматизированное тестирование кода, которое могло бы выявить опечатку;

 

 Сделала скорость, а не безопасность главным в развитии проекта.

 

Тогда же Уинтермьют пообещала, что ошибка не остановит развитие Hegic: она перепроверит код в соответствии с самыми суровыми требованиями безопасности и вскоре перезапустит протокол.

 

Спор о компетенциях аудиторской проверки

 

После инцидента компания Trail of Bits, проверившая код Hegic, подверглась критике. В ответ глава компании Дэн Гвидо заявил, что проверка кода — это не проверка на безопасность, а скорее сводка рекомендаций для разработчиков, чтобы понять ошибки их кода и исправить их. Также он заметил, что у Trail of Bits не было достаточно времени для доскональной проверки кода Hegic. В комментариях изданию Decrypt он сказал, что инцидент — «это явная ошибка, которая была бы легко выявлена, если бы были проведены какие-либо юнит-тесты», то есть проверка на корректность отдельных модулей кода протокола в разных ситуациях использования. По его словам, команда Trail of Bits нашла 10 критических недочётов в коде Hegic и рекомендовала отложить запуск протокола в основной сети. Но Уинтермьют проигнорировала предупреждения об ошибках и ряд критических недостатков, поспешно запустив непроверенный до конца протокол. Это дало пользователям ложное впечатление, что Hegic надёжен.

 

В своем посте от 26 апреля Уинтермьют сообщила, что с самого начала хотела заказать недельный аудит, но Trail of Bits убедили ее, что трехдневной проверки будет достаточно. В подтверждение своих слов она предоставила скриншоты переписки. Разработчица внесла правки в код согласно рекомендациям аудита, но это не избавило ее от ошибки.

 

Аудит смарт-контрактов — основная часть проверки безопасности DeFi-протоколов. Криптосообщество воспринимает его как гарантию того, что код безопасен и ошибок не будет. Но, как продемонстрировал инцидент с Hegic, сами аудиторские компании не считают, что аудит избавляет от проблем. В любом случае, понятно, что на момент активации Hegic не прошел полную проверку и оставался ряд нерешенных вопросов безопасности.

 

Работа над обновлением и еще одна ошибка

 

9 мая Уинтермьют запустила новую версию Hegic. Перед этим она провела автоматизированные тесты, обнаружив и исправив ряд новых проблем. На этот раз протокол был создан вообще без аудита, о чем разработчица честно предупредила пользователей: «Вы можете потерять до 100% своих средств, предоставленных в пулы ликвидности контрактов. Существует технический риск, что контракты новой версии протокола могут быть взломаны. Никогда не вкладывайте средства, которые вы не можете позволить себе потерять».

 

Но 21 мая в протоколе Hegic была найдена еще одна ошибка. На нее обратил внимание крипто-инвестор Эндрю Кан. В серии твитов он сообщил, что в коде протокола был недостаток, позволявший более ранним поставщикам ликвидности получать прибыль без выполнения своих обязательств. Поставщики ликвидности, которые продают опционные контракты (короткие опционы), получают свою премию и могут выйти из пула после его сбора. Проблема заключалась в том, что более поздние поставщики ликвидности затем вынуждены нести все риски, так как более ранние поставщики могут забрать свои премии за опционы и уйти. Эта уязвимость была применена Каном — он сначала депонировал ликвидность, потом приобрёл пут-опционы, вывел ликвидность и осуществил опционы. Это принесло ему прибыль без рисков, но заставило более поздних поставщиков ликвидности нести большие потери, чем они ожидали. Уинтермьют никак не прокомментировала твиты Кана.

 

В мае Уинтермьют все же провела аудит новой версии протокола Hegic, заказав его у компании Bramah Systems.

 

Результаты деятельности Hegic за июнь

 

Обновленная версия протокола Hegic была активирована 1 июня, а код выложен в открытом доступе на GitHub. 1 июля Уинтермьют отчиталась о достигнутых за месяц результатах:

 

 Торговый объем — 220.24 ETH;

 

 Торгуется в колл-опционах — 164.82 ETH;

 

 Торгуется в пут-опционах — 55.42 ETH;

 

 Общая стоимость заблокированных средств — $39 145, из них $31 411 в ЕТН, остальные — в пуле DAI.

 

Разработчица не упомянула о каких-либо недостатках в протоколе за месяц.

 

В начале месяца Уинтермьют также дала интервью платформе The Defiant, в котором подробнее рассказала о совершенной работе и запуске протокола. Она утверждает, что исправила все ошибки, поменяла свой подход к разработке и теперь ставит качество выше скорости. Уинтермьют также сообщила, что осуществляет деятельность над созданием собственных токенов проекта.

 

Для тех, кто  находится в сомнениях о безопасности Hegic, разработчица дала простую рекомендацию: «Не используйте его. Пока соотношение риска и вознаграждения при использовании протокола Hegic не устроит многих людей. Просто наблюдайте, учитесь и с завистью следите за высокими доходами других людей от торговли опционами на Hegic (шутка)».

 

Она сообщила, что доходность пула поставщиков ликвидности на ETH — около 25% годовых в ETH. Уинтермьют думает, что если кто-то хочет получать такую прибыль, то он должен быть готов внести средства на недавно запущенные протоколы. «Самые большие возможности всегда находятся далеко от текущего внимания стада», — сказала она, заметив, что когда-то Ethereum тоже был сырым продуктом, но те, кто поверил в него, не ошиблись.

 

Отвечая на вопрос, почему она запустила Hegic сразу в мейннете, Уинтермьют ответила, что «один протокол, запущенный в мейннете, стоит тысячи проектов, создатели которых разрабатывают их в течение многих лет и играют с новыми подходами, которые они находят, посещая различные хакатоны». Разработчица также отметила, что уже заплатила высокую цену за свой подход к запуску протоколов.

 

В заключение

 

Надёжность — главная из проблем нового криптосектора. DeFi-протоколы постоянно подвергаются атакам злоумышленников. Ранее DeCenter уже писал о том, как в феврале хакер дважды воспользовался уязвимостью протокола bZx и вывел ЕТН почти на $1 млн, а в апреле мошенник вывел $25 млн, заблокированных в китайском DeFi-протоколе dForce. Тогда мы предсказывали, что количество новых атак будет расти, и наши прогнозы, к сожалению, сбылись. Но история с Hegic продемонстрировала, что средства в DeFi-протоколах могут быть потеряны и по вине разработчиков — из-за чрезмерной спешки.

 

Инцидент с опечаткой в Hegic — очередной урок для DeFi. Экосистема развивается настолько волшебно быстрыми темпами, что не успевает достаточно тестировать и проверять свои сервисы. Если бы Уинтермьют взяла хотя бы месяц на тестирование, то проблемы не было бы. В мае она самостоятельно обнаружила и исправила несколько ошибок. Если бы Trail of Bits были более внимательными, ошибку тоже легко бы заметили. Но если аудит кода не гарантирует его безопасность, то какой в нем смысл?

 

Понятно, что случившееся — проблема не только Hegic и его пользователей. Вся DeFi-отрасль нуждается в более суровых правилах безопасности, без которых она не будет готова к массовому принятию. Чтобы DeFi-продукты стали надёжнее, нужно проведение комплексных аудитов от разных компаний, а также страхование от ошибок смарт-контрактов и хакерских атак. В противном случае пользователи будут терять средства все чаще.

bit44.org

Обязательно подпишитесь на наш Telegram канал

ПОДПИСЫВАЮСЬ
ПОТОМ