Ошибки в форке Gains Network позволяют трейдерам получать прибыль в 900% от каждой сделки: отчет

Самые главные криптоновости в Телеграм-канале CryptoMoon, присоединяйтесь!👇

Cryptomoon Telegram


Похоже, что две уязвимости безопасности были обнаружены командой Zellic в различных развилках протокола Gains Network. Первая уязвимость позволяла злоумышленнику обойти проверку, препятствующую открытию сделок по чрезвычайно высоким ценам, что потенциально могло привести к значительной прибыли злоумышленника. Эта уязвимость была обнаружена в конкретном форке, а не в текущей версии Gains Network.


Отчет компании Zellic, занимающейся безопасностью блокчейнов, опубликованный 19 апреля, показал, что две отдельные уязвимости в конкретной ветви торгового протокола Gains Network могли позволить трейдерам получать астрономическую прибыль до 900% от каждой сделки, независимо от цены токена. . Одна из этих ошибок была обнаружена в более ранней версии Gains и с тех пор исправлена. Однако вторая уязвимость была уникальной для этого конкретного ответвления протокола.

На основании заявления Зеллика команда Зеллика сообщила разработчикам Gambit Trade, Holdstation Exchange и Krav Trade об уязвимости в их соответствующих форках Gains. С тех пор эти команды предприняли шаги для решения этой проблемы и обеспечения отсутствия в своих протоколах этих конкретных недостатков. Однако Зеллик предупредил, что другие версии вилок Gains все еще могут находиться под угрозой.

Gains Network, основанная на собственном веб-сайте, представляет собой систему децентрализованного финансирования (DeFi), предлагающую различные продукты на Polygon и Arbitrum. Название приложения для торговли с использованием кредитного плеча — «gTrade». По данным DefiLlama, аналитической платформы блокчейна, с момента запуска в мае 2023 года объем торговли деривативами составил более 25 миллиардов долларов.

Ошибки в форке Gains Network позволяют трейдерам получать прибыль в 900% от каждой сделки: отчет

Зеллик утверждает, что многочисленные широко используемые торговые приложения децентрализованного финансирования (DeFi) построены на основе базовой кодовой базы Gains Network. Среди них Gambit Trade и Holdstation, а также различные другие протоколы. Изучая конкретный форк, они выявили эксплойт, но предпочли не раскрывать, в каком форке он находился.

Согласно выводам отчета, пользователи Gains Network имеют возможность размещать три различных типа ордеров на торговые активы: рыночные, разворотные и импульсные. Рыночный ордер исполняется мгновенно по текущей рыночной цене, независимо от колебаний цен.

Как криптоинвестор, когда я размещаю импульсную или разворотную сделку через смарт-контракт, записывается «ордер» с подробной информацией о желаемой цене сделки. Как только эта цена достигнет рынка, любой пользователь сможет активировать ордер, вызвав функцию выполненияLimitOrder. Важно отметить, что пользователь, инициирующий исполнение, не обязательно должен быть тем, кто первоначально разместил заказ. В обмен на свою роль в совершении сделки пользователь получает небольшую «комиссию за исполнение».

Пользователи имеют возможность устанавливать лимитные и стоп-лимитные ордера, как на традиционной бирже, но не полагаясь на централизованного посредника для исполнения ордеров.

Как криптоинвестор, я могу использовать функцию, которая позволяет мне автоматически определять конкретные цены для закрытия моих сделок. Устанавливая цену тейк-профита, я стремлюсь обеспечить прибыль, когда сделка достигнет этого уровня, а цена стоп-лосса предназначена для ограничения потенциальных потерь, если рынок пойдет против меня. Целью этих ордеров является обеспечение автоматической стратегии выхода на основе заранее определенных условий.

Ошибка в форке Gains позволила получить 900% прибыли по ордерам на покупку

Будучи исследователем, изучающим форк-торговую систему Gains, я наткнулся на интригующее открытие, касающееся обработки стоп-лосс ордеров. При запуске ордера цена стоп-лосса будет сохранена в переменной currentPrice, используемой для расчета прибылей и убытков. Следовательно, если трейдеру удастся установить цену стоп-лосса выше цены открытия, он автоматически обеспечит прибыль от любых последующих движений цены.

Как финансовый аналитик, я бы перефразировал это так: когда цена Биткойна (BTC) составляла 63 000 долларов США, и вы установили открытую позицию на уровне 62 000 долларов США со стоп-лоссом на уровне 64 000 долларов США, если цена упадет до 62 000 долларов США, ваш ордер будет исполнен. . Однако, поскольку цена сейчас находится прямо под вашим назначенным стоп-лоссом, будет инициирован автоматический выход.

Кроме того, назначенная пользователем цена стоп-лосса будет регистрироваться как текущая рыночная стоимость. Следовательно, пользователь получит прибыль в размере 2000 долларов США, хотя фактическая прибыль должна была составить около 0 долларов США. Эта уязвимость потенциально может позволить злоумышленнику получать прибыль от каждой сделки и в конечном итоге опустошать средства протокола.

Как исследователь, исследующий потенциальные уязвимости в торговых протоколах, я бы рекомендовал принять меры безопасности, чтобы пользователи не могли устанавливать цену стоп-лосса выше их первоначальной цены покупки в ордере на покупку. Для достижения этой цели протокол должен включать механизм проверки, который проверяет наличие несоответствий и выдает сообщение об ошибке, помеченное как «wrong_sl», когда такая попытка предпринимается пользователем.

Ошибки в форке Gains Network позволяют трейдерам получать прибыль в 900% от каждой сделки: отчет

Однако следователи обнаружили, что при определенных обстоятельствах эту проверку можно было обойти.

Когда пользователь впервые инициирует заказ, он указывает желаемую цену входа, которая сохраняется в переменной «openPrice». На этом этапе проводится проверка. Тем не менее, функция, отвечающая за обработку ордеров, изменяет переменную «openPrice» так, чтобы она равнялась «a.Price» плюс любое влияние на цену от инициируемой новой сделки. Проще говоря, когда пользователь инициирует заказ, он первоначально устанавливает цену входа, которая записывается. Затем проводится проверка. Однако по мере исполнения ордера эта первоначальная цена входа заменяется текущей рыночной ценой плюс любые дополнительные затраты, связанные с размером ордера (влияние на цену).

Если пользователь ввел необычно высокую цену открытия, система позволит исполнителю обработать ордер без запуска проверки цены, что приведет к исполнению ордера по более низкой цене открытия.

Например, Зеллик размышлял над гипотетическим сценарием, в котором фигурирует противник, который намеревается приобрести токен по цене один квадриллион долларов (100 000e10 долларов США) и устанавливает стоп-лосс почти на ту же сумму, а именно на 999,999999999998 триллионов долларов США. После размещения этого ордера злоумышленник выполняет свою собственную транзакцию, что приводит к изменению openPrice, чтобы отразить новую цену после корректировки цены сделки.

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

По словам Зеллика, сделка принесла бы злоумышленнику 900% прибыли.

Ошибки в форке Gains Network позволяют трейдерам получать прибыль в 900% от каждой сделки: отчет

Первая обнаруженная нами уязвимость не была частью исходной сети Gains Network, когда ее обнаружила команда Zellic. Вместо этого он появился в раздвоенном варианте, который мы изучали. Однако во время нашего расследования этого вопроса мы наткнулись на вторую проблему, которая присутствовала в более ранней версии самого Gains.

Вторая ошибка позволяла получить 900% прибыли по ордерам на продажу.

Вторая ошибка позволяла трейдерам получать 900% прибыли от ордеров на продажу независимо от ценового движения.

В форке Gains при заключении сделки платформа преобразует указанный пользователем уровень стоп-лосса или тейк-профита в переменную с именем «int». Эта переменная затем используется для определения прибыли в процентах. Однако если пользователь устанавливает значение стоп-лосса или тейк-профита, равное 2^256-1, последующие вычисления приведут к отрицательному значению для «int».

В Ethereum максимальное значение положительных чисел представлено 2^256-1. При попытке добавить значение, превышающее этот предел, к общему числу на языке программирования Solidity, расчет приведет к «переполнению», что приведет к перезапуску расчета с нуля. Это значение также называется «тип(uint256).max».

Согласно выводам Зеллика, если злоумышленник использовал кредитное плечо, более чем в 9 раз превышающее первоначальные инвестиции, он потенциально мог бы получить доход более 900%.

«Давайте рассмотрим ордер на продажу с текущей ценой типа (uint256).max. Результирующее значение diff будет openPrice + 1 (int(type(uint256).max) = -1 ), и, следовательно, процент прибыли будет почти равен 100 * кредитное плечо. Следовательно, если кредитное плечо больше 9, функция вернет прибыль в размере 900%».

Как исследователь, изучающий положения контрактов в финансовой торговле, я наткнулся на положение, направленное на предотвращение входа 2^256-1 в качестве уровня тейк-профита. Эта проверка была разработана для выполнения при первоначальном размещении заказа. Однако я обнаружил лазейку: если пользователь изменил настройку тейк-профита после открытия ордера, он мог обойти это ограничение и ввести 2^256-1 в качестве желаемого уровня прибыли. Этот надзор позволил пользователям потенциально получать автоматическую прибыль в размере примерно 900% каждый раз, когда они торгуют.

В более ранней версии Gains возникла проблема со второй ошибкой, которая была устранена посредством обновления. Теперь в обновленной версии этой проблемы нет, поскольку процесс проверки выполняется не только при корректировке тейк-профита и стоп-лосса, но и при их первоначальной настройке.

Зеллик якобы поделился информацией о двух выявленных уязвимостях безопасности со всеми упомянутыми форками и обратился к Crypto Security Alliance для изучения других потенциально затронутых протоколов. Тем не менее, было выпущено предостережение, поскольку некоторые версии форка Gains все еще могут содержать эти ошибки, потенциально подвергая средства пользователей риску истощения.

Как криптоинвестор, я обратился к CryptoMoon, чтобы узнать об их попытках связаться с Gains Network, Gambit Trade, Holdstation Exchange и Krav Trade для получения комментариев. Однако на момент публикации этой статьи я не получил никаких ответов от этих бирж.

По данным Gains Network, они предоставляют подлинную рыночную цену котируемых активов вместо того, что они считают менее точными цифрами, полученными из бессрочных контрактов. Более того, они могут похвастаться лучшими возможностями торговли на Форекс, чем их конкуренты.

Смотрите также

2024-05-09 23:40