Back to Blog

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

Code Auditing
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, который подвержен известной уязвимости.

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

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

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

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

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

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

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

Очередная атака!

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

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

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

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

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

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

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

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

Оставайтесь с нами и будьте в безопасности.

О компании BlockSec

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

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

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

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

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit