Уязвимость на OpenSea позволила злоумышленникам заработать сотни тысяч на перепродаже NFT

Баг на популярной торговой площадке для NFT OpenSea позволила мошенникам покупать редкие NFT по цене значительно ниже рыночной, а перепродавать в тысячи раз дороже.

По всей видимости, уязвимость использовалась в течение нескольких недель. Но эксплуатация бага возросла именно в последние дни. По данным аналитиков Elliptic, за 12 часов с утра 24 января мошенники воспользовались уязвимостью как минимум восемь раз для покупки редких NFT суммарной стоимостью более $1 млн.

Один из NFT, Bored Ape Yacht Club #9991, был куплен с использованием эксплойта за 0,77 ETH ($1760) и тут же перепродан за 84,2 ETH ($192 400). За 12-часовой период Ethereum-адрес, связанный с злоумышленником, получил более 400 ETH ($900 000) в виде выплат от OpenSea.

«Это субъективный вопрос, считаете ли вы это лазейкой или багом, но факт в том, что людей вынуждают продавать по цене, которую они, не существуй этот баг, не одобрили бы сейчас», — сказал Том Робинсон, главный научный сотрудник и сооснователь компании Elliptic.

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

При продаже NFT пользователь OpenSea устанавливает прейскурантную цену для потенциальных покупателей. Если покупатель соглашается на эту цену, сделка проводится автоматически — через смарт-контракт. Если владелец NFT хочет повысить стоимость токена, то необходимо сначала отменить первый смарт-контракт, заплатив за эту операцию газом, а затем разместить новый смарт-контракт. Т.к. цена за отмену смарт-контракта может сейчас достигать десятки и даже сотни долларов, пользователи предпочитают обходить эту процедуру: переводят NFT на другой кошелек, а затем обратно на исходный. Такой метод удаляет список предыдущих смарт-контрактов на продажу из приложения OpenSea, но сохраняется активным в блокчейне. Такие «устаревшие», но активные смарт-контракты предположительно можно было найти через API OpenSea, чем и воспользовались злоумышленники.

По данным CoinDesk, ошибка была обнаружена еще 31 декабря 2021 года. Твит, написанный почти две недели назад, 12 января 2022 года, подробно описывает принудительную продажу NFT с помощью того же метода.