Back to Blog

Как мы вернули украденные средства для TransitSwap и BabySwap

October 10, 2022
3 min read

Введение

1 октября в сетях BabySwap и TransitSwap в BSC произошли атаки. Некоторые транзакции злоумышленников были опережены ботом (front-run). Примечательно, что данный бот был подвержен уязвимости инструмента profanity, и мы успешно восстановили его закрытый ключ. Нам также удалось провести обратную разработку контракта бота и вывести средства со счета бота на наш защищенный аккаунт. Мы уже перевели средства в TransitSwap и на текущем этапе связываемся с BabySwap.

Хронология

Обнаружение атаки на BabySwap

01.10.2022 в 14:47 (UTC) наша внутренняя система сообщила об атакующей транзакции. Наш дальнейший анализ показал, что это произошло из-за контролируемых фабрик в контракте смарт-роутера. Однако мы не раскрывали детали в то время, поскольку проект все еще оставался уязвимым. Мы связались с BabySwap через личные сообщения в Twitter и Telegram, но не получили ответа.

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

Восстановление закрытого ключа бота

01.10.2022 в 16:10 (UTC) наш инструмент успешно восстановил закрытый ключ этого бота примерно за 20 минут. Для восстановленного ключа мы перевели средства на защищенный счет (это стандартный процесс нашего спасения активов). В противном случае другие лица, которые также могли бы восстановить закрытый ключ, могли бы захватить аккаунт, и средства на нем оказались бы под угрозой.

Вывод средств из бота

Проблема заключалась в том, что средства находились не на EOA-аккаунте бота, а в контракте, развернуть который боту удалось ранее. Задача заключалась в том, как вывести эти средства.

Мы декомпилировали контракт и обнаружили в нем функцию вывода средств (withdraw) (как показано на рисунке ниже).

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

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

Новая атака!

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

Возврат средств

После внутреннего обсуждения мы решили вернуть средства атакованным проектам (а не боту) по следующим причинам:

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

  • Во-вторых, средства принадлежат жертвам атаки, то есть пользователям пострадавших DeFi-протоколов. Пользователи сильно пострадали из-за уязвимости в DeFi-протоколе. Они должны получить средства назад от злоумышленников.

Мы перевели средства на официальный адрес для сбора возвращенных средств TransitFinance и поддерживаем связь с BabySwap.

Обновление процесса спасения активов

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

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

Следите за обновлениями и оставайтесь в безопасности.

Основной вывод

Обеспечение безопасности DeFi-проекта — непростая задача. Помимо аудита кода, мы считаем, что сообществу следует использовать проактивный метод мониторинга состояния проекта и блокировать атаки еще до их начала.

О компании BlockSec

BlockSec — передовая компания в области безопасности блокчейна, основанная в 2021 году группой всемирно известных экспертов по безопасности. Компания стремится повысить безопасность и удобство использования развивающегося мира Web3 для содействия его массовому внедрению. Для этого BlockSec предоставляет услуги по аудиту безопасности смарт-контрактов и EVM-сетей, платформу Phalcon для безопасной разработки и проактивного блокирования угроз, платформу MetaSleuth для отслеживания и расследования движения средств, а также расширение MetaDock для эффективной работы Web3-разработчиков в криптоиндустрии.

На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, и привлекла десятки миллионов долларов США в двух раундах финансирования от ведущих инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.

Официальный сайт: https://blocksec.com/

Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam