Недавно экосистема BNB Chain проект MobiusDAO подверглась атаке, в результате которой злоумышленники использовали логическую уязвимость контракта проекта для выпуска большого количества токенов MBU и их последующей продажи с прибылью. Команда безопасности Beosin провела анализ уязвимости и отслеживание средств и поделилась результатами ниже:
Подробные шаги атаки
(1) Нападающий сначала развернул контракт атаки (0x631adFF068D484Ce531Fb519Cda4042805521641)
и использовал этот контракт для вызова функции депозита контракта-агента Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531, после чего контракт Mobius выпустил более 9.7x10^15 токенов MBU и отправил их контракту-атакующему.
Атака на хэш транзакции: 0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) Атакующий контракт вызывает соответствующий контракт PancakeSwap для продажи токенов MBU после получения токенов MBU, чтобы завершить получение прибыли.
Анализ уязвимостей
Функция депозита контракта Mobius создает эквивалентное количество токенов MBU и отправляет их депозитору после получения депозита. В этой функции, каждый раз, когда пользователь вносит WBNB, функция получает цену BNB для расчета количества токенов MBU, которые нужно создать и перевести.
Цена BNB поступает из функции getBNBPriceInUSDT, которая возвращает цену с точностью до 18 знаков после запятой. Как показано на рисунке, возвращаемая цена составляет примерно 656 долларов.
Поскольку логический контракт Mobius не является открытым, мы обнаружили при обратной компиляции, что уязвимость возникает, когда функция возвращает результат с 18 знаками после запятой; контракт снова умножает это значение на 10^18, что приводит к количеству токенов MBU, превышающему нормальный результат в 10^18 раз.
Отслеживание украденных средств
Beosin Trace отследила украденные средства и обнаружила, что украденные средства были конвертированы злоумышленниками примерно в 2,15 млн токенов USDT, из которых 1,35 млн USDT были конвертированы в BNB и внесены в Tornado Cash, а оставшиеся 800 000 USDT были обменены на ETH в цепочке Ethereum через кроссчейн, а затем депонированы в Tornado Cash. Beosin Trace добавил в базу данных хакеров адреса, связанные с хакерами, и продолжит отслеживать их в будущем.
Согласно анализу Beosin Trace, все украденные средства были переведены в Tornado Cash.
Резюме
Суть этой атаки заключается в том, что злоумышленник использовал арифметическую ошибку в контракте проекта, чтобы создать огромное количество токенов и продать их с прибылью. Эта ошибка в коде была бы очень легко обнаружена, но команда проекта Mobius ранее не провела детальное тестирование кода контракта и не провела аудит, что привело к потерям более 2,15 миллиона долларов. Команда безопасности Beosin рекомендует команде проекта усилить аудит и тестирование безопасности кода контракта, чтобы избежать подобных ситуаций в будущем.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Потеряно 2,15 миллиона долларов! Анализ уязвимости инцидента MobiusDAO и отслеживание украденных средств
Автор: Beosin
Недавно экосистема BNB Chain проект MobiusDAO подверглась атаке, в результате которой злоумышленники использовали логическую уязвимость контракта проекта для выпуска большого количества токенов MBU и их последующей продажи с прибылью. Команда безопасности Beosin провела анализ уязвимости и отслеживание средств и поделилась результатами ниже:
Подробные шаги атаки
(1) Нападающий сначала развернул контракт атаки (0x631adFF068D484Ce531Fb519Cda4042805521641)
и использовал этот контракт для вызова функции депозита контракта-агента Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531, после чего контракт Mobius выпустил более 9.7x10^15 токенов MBU и отправил их контракту-атакующему.
Атака на хэш транзакции: 0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) Атакующий контракт вызывает соответствующий контракт PancakeSwap для продажи токенов MBU после получения токенов MBU, чтобы завершить получение прибыли.
Анализ уязвимостей
Функция депозита контракта Mobius создает эквивалентное количество токенов MBU и отправляет их депозитору после получения депозита. В этой функции, каждый раз, когда пользователь вносит WBNB, функция получает цену BNB для расчета количества токенов MBU, которые нужно создать и перевести.
Цена BNB поступает из функции getBNBPriceInUSDT, которая возвращает цену с точностью до 18 знаков после запятой. Как показано на рисунке, возвращаемая цена составляет примерно 656 долларов.
Поскольку логический контракт Mobius не является открытым, мы обнаружили при обратной компиляции, что уязвимость возникает, когда функция возвращает результат с 18 знаками после запятой; контракт снова умножает это значение на 10^18, что приводит к количеству токенов MBU, превышающему нормальный результат в 10^18 раз.
Отслеживание украденных средств
Beosin Trace отследила украденные средства и обнаружила, что украденные средства были конвертированы злоумышленниками примерно в 2,15 млн токенов USDT, из которых 1,35 млн USDT были конвертированы в BNB и внесены в Tornado Cash, а оставшиеся 800 000 USDT были обменены на ETH в цепочке Ethereum через кроссчейн, а затем депонированы в Tornado Cash. Beosin Trace добавил в базу данных хакеров адреса, связанные с хакерами, и продолжит отслеживать их в будущем.
Согласно анализу Beosin Trace, все украденные средства были переведены в Tornado Cash.
Резюме
Суть этой атаки заключается в том, что злоумышленник использовал арифметическую ошибку в контракте проекта, чтобы создать огромное количество токенов и продать их с прибылью. Эта ошибка в коде была бы очень легко обнаружена, но команда проекта Mobius ранее не провела детальное тестирование кода контракта и не провела аудит, что привело к потерям более 2,15 миллиона долларов. Команда безопасности Beosin рекомендует команде проекта усилить аудит и тестирование безопасности кода контракта, чтобы избежать подобных ситуаций в будущем.