Анализ инцидента с криптовалютной биржей ByBit компанией Certik - передовика методов формальной проверки для аудита блокчейна.
Краткое описание инцидента
21 февраля 2025 года в 02:16:11 по Гринвичу холодный ethereum-кошелек Bybit (0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4) был заблокирован из-за вредоносного обновления контракта. По словам генерального директора Bybit Бена Чжоу, злоумышленник проводил фишинговые атаки против подписчиков "холодного кошелька", что приводило к неправильному подписанию вредоносных транзакций. Он также заявил, что эта конкретная транзакция была подделана, при этом законная транзакция отображалась в пользовательском интерфейсе Safe {Wallet}, в то время как данные вредоносной транзакции были отправлены в Ledger. Злоумышленнику удалось получить три действительные подписи для авторизации транзакции, которая заменила контракт на внедрение мультисиг кошелька Safe вредоносным контрактом, что позволило им вывести средства с кошелька. Этот эксплойт привел, по оценкам, к подтвержденным убыткам примерно в 1,46 миллиарда долларов, что стало крупнейшим нарушением в истории Web3.
Транзакции с использованием эксплойтов
Безопасный кошелек до вредоносного контракта: https://etherscan.io/tx/0x46deef0f52e3a983b67abf4714448a41dd7ffd6d32d32da69d62081c68ad7882
Многочисленные транзакции выводят средства из холодного кошелька Bybit.
- Израсходовано 15 000 cmETH: https://etherscan.io/tx/0x847b8403e8a4816a4de1e63db321705cdb6f998fb01ab58f653b863fda988647
- Израсходовано 8000 mETH: https://etherscan.io/tx/0xbcf316f5835362b7f1586215173cc8b294f5499c60c029a3de6318bf25ca7b20
- Сброшено 90,375 stETH: https://etherscan.io/tx/0xa284a1bc4c7e0379c924c73fcea1067068635507254b03ebbbd3f4e222c1fae0
- Израсходовано 90 USDT: https://etherscan.io/tx/0x25800d105db4f21908d646a7a3db849343737c5fba0bc5701f782bf0e75217c9
Основные адреса
Адрес "холодного кошелька" (жертвы) с несколькими sig-кодировками Bybit: https://etherscan.io/address/0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4
Адрес злоумышленника, осуществившего первоначальную атаку: https://etherscan.io/address/0x0fa09c3a328792253f8dee7116848723b72a6d2e
Контракт на внедрение вредоносного по: https://etherscan.io/address/0xbdd077f651ebe7f7b3ce16fe5f2b025be2969516
Контракт на атаку, используемый при вызове безопасного делегирования: https://etherscan.io/address/0x96221423681A6d52E184D440a8eFCEbB105C7242
Поток атак
- Злоумышленник внедрил 2 вредоносных контракта за 3 дня до атаки, 18 февраля 2025 (UTC).
a. Контракт содержит бэкдорные функции для перевода средств: https://etherscan.io/address/0xbdd077f651ebe7f7b3ce16fe5f2b025be2969516
b. Контракт содержит код для изменения слота хранилища для достижения обновления контракта: https://etherscan.io/address/0x96221423681A6d52E184D440a8eFCEbB105C7242
2. Злоумышленник обманом заставил трех владельцев (подписантов) кошелька с несколькими подписями подписать вредоносную транзакцию 21 февраля 2025 года, которая в конечном итоге обновила контракт на внедрение сейфа до вредоносного контракта, развернутого ранее, который содержал бэкдоры. https://etherscan.io/tx/0x46deef0f52e3a983b67abf4714448a41dd7ffd6d32d32da69d62081c68ad7882.
3. Поле "Операция" в транзакции эксплойта имеет значение "1", предписывающее контракту GnosisSafe выполнить "делегированный вызов", тогда как значение "0" относится к "вызову".
4. Эта транзакция выполняет вызов делегата для другого контракта, развернутого злоумышленником (0x96221423681a6d52e184d440a8efcebb105c7242), который содержит функцию "transfer()", которая изменяет первый слот хранения "_uint256 transfer" контракта при вызове.
В контракте GnosisSafe первый слот хранилища содержит адрес "masterCopy", который является адресом контракта на реализацию контракта GnosisSafe.
Изменив первый слот хранилища контракта Gnosis Safe, злоумышленник смог изменить адрес контракта на реализацию (адрес "masterCopy").
Из приведенных ниже сведений о транзакции видно, что злоумышленник присвоил адресу "masterCopy" значение (0xbDd077f651EBe7f7b3cE16fe5F2b025BE2969516), который содержит функции “sweepETH()” и “sweepERC20()”, описанные ниже.
5. Метод обновления контракта, используемый в этой атаке, является нетрадиционным и специально разработан, чтобы избежать обнаружения. С точки зрения подписывающего лица Bybit, данные транзакции, подлежащие подписанию, отображаются как простой вызов функции "передача (адрес, uint256)" вместо необычной функции "обновление", которая в противном случае могла бы вызвать подозрение.
6. Обновленный контракт на внедрение вредоносного по содержит бэкдорные функции “sweepETH()” и “sweepERC20()", которые злоумышленник использовал для слива "холодного" кошелька с несколькими сигами. Это привело к краже ETH на сумму 1,4 миллиарда долларов.
Уязвимость
Эксплойт стал результатом успешной фишинг-атаки, которая обманом вынудила подписчиков кошелька подписать данные вредоносной транзакции, что в конечном итоге привело к обновлению контракта. Это обновление позволило злоумышленнику получить контроль над холодным кошельком и вывести его средства. Точные методы, использованные для планирования и осуществления фишинг-атаки, остаются неизвестными.
По словам генерального директора Bybit Бена Чжоу, который объяснил в своей прямой трансляции через два часа после эксплойта, команда Bybit выполняла обычную передачу активов с холодного кошелька на теплый, и он был последним, кто подписал безопасную транзакцию с несколькими сигами. Он заявил, что эта конкретная транзакция была замаскирована; все подписавшиеся видели замаскированный пользовательский интерфейс, который отображал правильный адрес и данные транзакции в пользовательском интерфейсе Safe {Wallet}, и URL-адрес действительно был подтвержден Safe {Wallet}. Данные в пользовательском интерфейсе Safe казались правильными, но при отправке в Ledger для подписания они были изменены. Он упомянул, что не проверял данные транзакции в пользовательском интерфейсе аппаратного кошелька Ledger перед подписанием. Каким образом злоумышленник изменил пользовательский интерфейс Safe {Кошелька}, остается неизвестным. Основываясь на информации, которой поделился Arkham, @zachxbt представил неопровержимые доказательства того, что атака на Bybit была осуществлена группой LAZARUS.
Выводы
Атака напоминает эксплойт Radiant Capital от 16 октября 2024 года (Ref_1, Ref_2), в результате которого было выведено около 50 миллионов долларов. В этом случае были скомпрометированы несколько устройств разработчиков, что позволило злоумышленникам манипулировать интерфейсом Safe {Wallet} для отображения данных законных транзакций, в то время как данные вредоносных транзакций отправлялись на аппаратный кошелек. Компромисс не был обнаружен во время ручного анализа пользовательского интерфейса и тщательного моделирования. Первоначально злоумышленники получили доступ, выдав себя за доверенного бывшего подрядчика, отправив сообщение Telegram с заархивированным PDF-файлом, содержащим вредоносное ПО, которое установило постоянный бэкдор macOS.
Хотя основная причина манипуляций с пользовательским интерфейсом в случае с Bybit остается неподтвержденной, вероятным фактором является компрометация устройства, аналогичная инциденту с Radiant Capital. Обе атаки подчеркивают две критические предпосылки для успеха атаки: компрометация устройств-жертв и слепая подпись. Учитывая растущее количество взломов, приписываемых этим факторам, мы рассматриваем два основных вектора атак и возможные подходы к их смягчению.
1. Компрометация устройств-жертв:
Первоначальная компрометация устройств-жертв с помощью тактики социальной инженерии, распространяющей вредоносное ПО, остается распространенным вектором атаки в крупномасштабных криптоинцидентах. Субъекты, спонсируемые национальным государством, такие как LAZARUS GROUP, часто используют этот метод для получения начального доступа. Компрометация устройства - высокоэффективный метод обхода средств контроля безопасности.
Подходы к смягчению последствий:
- Повышенная безопасность устройств:Внедряйте строгие политики безопасности конечных точек и внедряйте решения EDR, такие как CrowdStrike.
- Выделенное устройство подписи:Выполняйте подписание транзакций на выделенном устройстве универсального назначения.
- Свежая операционная система для критически важных операций: Используйте непостоянные операционные системы (такие как временные виртуальные машины) для выполнения критически важных транзакций в чистой среде.
- Кампании по симуляции фишинга:Проводите обычные симуляции фишинга, особенно для ролей с высоким уровнем риска, таких как криптооператоры и подписчики с несколькими сигнификациями.
- Упражнения Red Team: Имитируйте тактику противника для оценки и усиления мер безопасности против целевых атак.
2. Использование слепой подписи
Слепое подписание происходит, когда пользователи подписывают транзакции без полной проверки своих данных, что увеличивает риск подписания вредоносных непреднамеренных транзакций. Эта небезопасная практика широко распространена среди обычных пользователей DeFi и создает значительные риски для безопасности. Криптооператоры и подписанты, управляющие значительными активами, должны быть особенно бдительны в отношении такого поведения. В Реестре аппаратных кошельков недавно обсуждалась эта тема (Ref_1, Ref_2). В инциденте с Bybit мошеннический интерфейс скрыл злонамеренный умысел транзакции, в результате чего на устройство Ledger были отправлены ложные данные. Подписавший забыл проверить детали транзакции в Бухгалтерской книге, что привело к компрометации.
Подходы к смягчению последствий:
- Избегайте непроверенных dApps:Взаимодействуйте только с проверенными платформами; добавляйте в закладки официальные URL-адреса для предотвращения фишинга.
- Просмотрите данные транзакции на аппаратном кошельке:Внимательно просмотрите данные транзакции, отображаемые на экране аппаратного кошелька. Подтвердите, что все детали, такие как адрес получателя, сумма и функция, соответствуют предполагаемому действию.
- Моделирование транзакции:Перед подписанием смоделируйте транзакцию, чтобы понаблюдать за ее результатом и убедиться в ее правильности.
- Используйте невизуальные интерфейсы:Выбирайте инструменты командной строки (CLI) вместо того, чтобы полагаться на интерфейсы пользовательского интерфейса сторонних производителей. Инструменты CLI снижают риск манипулирования пользовательским интерфейсом и обеспечивают более прозрачный просмотр данных транзакций.
- Остановитесь, если что-то покажется подозрительным:Если какая-либо часть транзакции покажется необычной или неверной, немедленно остановите процесс и воздержитесь от подписания. Проведите тщательное расследование для выявления и устранения любых несоответствий.
- Второе устройство для проверки:Используйте отдельное устройство для независимой проверки данных транзакции перед подписанием. Это устройство должно сгенерировать читаемый код подтверждения подписи, который соответствует данным, отображаемым на аппаратном кошельке.
После многомиллионных убытков Radiant Capital и WazirX компания Bybit стала жертвой крупнейшей кражи Web3 на сегодняшний день. Растущая частота и изощренность этих атак выявляют серьезные пробелы в операционной безопасности. Злоумышленники систематически нацеливаются на объекты с высокой стоимостью. По мере продвижения злоумышленников CEX и криптоорганизации должны укреплять свою систему безопасности и сохранять бдительность в отношении возникающих внешних угроз.