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

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

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

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

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

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

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

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

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

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

«Я работаю над тем, что я называю Hegic. Я надеюсь показать свое творение как можно скорее», — написала Уинтермьют у себя в Twitter.

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

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

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

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

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

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

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

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

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

«Предупреждение: в коде была обнаружена опечатка. Из-за этого ликвидность в просроченных опционных контрактах не может быть разблокирована для новых опционов. Пожалуйста, исполните все свои активные опционные контракты прямо сейчас. Каждому будет возвращено 100% суммы премии, которую вы заплатили за опционы», — написала в Twitter Уинтермьют.

Позже выяснилось, что потери оказались в полтора раза выше. 9 мая Уинтермьют уточнила, что в смарт-контрактах оказались навсегда заблокированы $47 765 — разработчица уверяет, что уже возместила пользователям все потерянные средства.

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

После инцидента компания 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-продукты стали безопаснее, нужно проведение комплексных аудитов от разных компаний, а также страхование от ошибок смарт-контрактов и хакерских атак. В противном случае пользователи будут терять средства все чаще.

Подписаться
на DeCenter в Telegram