Подменили скрипт для измерения скорости — более 700 трейдеров за час потеряли 2,7 миллиона долларов
29 октября на международной версии Polymarket, платформы предсказаний, произошло нечто парадоксальное. Пострадавшие не переходили по фишинговым ссылкам, не раскрывали сид-фразы, а смарт-контракты не взламывали. Они просто, как обычно, открыли сайт Polymarket. Сессия оставалась активной, а деньги перевели с их же аккаунтов.
Проблема оказалась в скрипте для измерения скорости. На сайте Polymarket был встроен скрипт мониторинга реальных пользователей британской компании DebugBear — он предназначался для измерения скорости загрузки страниц. Такие скрипты запускаются в браузере каждого посетителя и обладают практически теми же правами, что и собственный код сайта. 29 октября кто-то изменил у регистратора DNS-записи домена DebugBear: запросы начала обрабатывать другая серверная система, и браузеры пользователей вместо файла для измерения скорости получали вредоносную программу для кражи средств размером около 15 КБ. Исследователи дважды скачивали один и тот же вредоносный файл.
Программа крала средства довольно простым способом. Она считывала сохранённые в браузере тип входа в аккаунт, адрес кошелька и учётные данные для транзакций, находила на странице собственный торговый клиент Polymarket и использовала его для совершения операций. Позиции продавались, а выручка конвертировалась в POL в сети Polygon, после чего деньги выводились через собственный безгазовый ретранслятор платформы. Данные блокчейна показывают, что за один час — с 17:10 до 18:10 — было совершено 985 несанкционированных выводов. На кошелёк злоумышленника поступило 28,6 миллиона POL, что по тогдашнему курсу составляло около 2,64 миллиона долларов. По оценкам аналитических компаний Bubblemaps и Bitquery, общая сумма составила около 2,7 миллиона долларов, а пострадали более 700 аккаунтов. Разница в несколько десятков тысяч долларов объясняется разными методами подсчёта, но масштаб потерь не вызывает сомнений.
В тот же день в 14:05 Polymarket перевела международную версию сайта в режим, в котором можно было только отменять ордера; примерно в 15:05 торговлю возобновили. В публичном заявлении компания сообщила лишь, что был взломан сторонний поставщик, дело передано правоохранительным органам, а пострадавшим пользователям возместят потери полностью. Позже компания объявила о выплатах на общую сумму около 3,9 миллиона долларов: примерно 2,7 миллиона долларов получили кошельки, из которых украли средства, а ещё около 1,19 миллиона долларов — примерно 5500 кошельков, пострадавших из-за приостановки торгов. Подавать заявку на возмещение пользователям не требовалось. Американская версия платформы работает отдельно и не пострадала. Полного объяснения того, как именно изменили доменные записи, пока нет.
На один момент стоит обратить особое внимание. В образце, который проверила Hudson Rock, не обнаружили отдельной программы для передачи сид-фраз или приватных ключей. Чтобы украсть деньги, не нужно было похищать ключи: пропуском служила сама активная сессия в браузере. В этом году платформа уже второй раз пострадала из-за стороннего поставщика: в июне тоже подменили код фронтенда. Даже если тщательно защищать смарт-контракты, это не поможет контролировать чужой код на веб-странице.
Для розничных инвесторов этот случай меняет первый пункт в списке мер защиты от кражи. Раньше он выглядел так: пользоваться крупными платформами, не переходить по фишинговым ссылкам и хранить сид-фразу в безопасности. Теперь к нему нужно добавить ещё одно правило: торговая страница может измениться без вашего ведома. Открытая торговая страница и активная сессия в браузере — это тоже ресурсы, которыми могут воспользоваться. Оставлять деньги на торговом аккаунте на ночь и хранить их в собственном кошельке — совершенно разные вещи с точки зрения риска.
Для себя я вынес из этой истории три правила. Закончили торговать — выйдите из аккаунта, не держите торговую страницу открытой в браузере весь день. Не храните крупные суммы на торговом аккаунте длительное время: воспользовались ими — переведите обратно туда, где вы сами контролируете средства. Если страница вдруг начинает сама продавать ваши позиции или показывает незнакомый запрос на предоставление разрешений, сначала закройте её и отключите соединение, не нажимайте дальше по подсказкам.
Моё мнение простое: оценивая платформу, в будущем нужно спрашивать не только, проходили ли её смарт-контракты аудит, но и сколько стороннего кода работает на её сайте и можно ли мгновенно отключить весь этот код в случае инцидента. Если платформа не может ответить на эти вопросы, я не стану оставлять на ней крупные суммы, пока аккаунт открыт. А вы выходите из аккаунта после торговли или оставляете страницу открытой?
—— Web3-новичок Сяокай
Эта статья отражает только личное мнение автора и не является инвестиционной рекомендацией. Данные взяты из публичных заявлений Polymarket и открытых расследований Hudson Rock, Bitquery и Bubblemaps. Суммы могут незначительно различаться в зависимости от метода подсчёта. Самостоятельно оценивайте риски.
#Polymarket #DeFi安全 #供应链攻击 #БезопасностьКошелька