Протокол Truebit взломали из-за уязвимости переполнения целых чисел, похитив 8 535,36 ETH

iconBlockbeats
Поделиться
Share IconShare IconShare IconShare IconShare IconShare IconCopy
AI summary iconКраткое содержание

expand icon
Новости ETH: 8 января 2026 года протокол Truebit подвергся взлому, в результате которого было украдено 8 535,36 ETH (примерно 26,44 млн долларов). Атака использовала переполнение целочисленного типа в Solidity ^0.6.10, а именно в функции getPurchasePrice. Компания ExVul Security подтвердила, что злоумышленник использовал четырехходовой цикл транзакций для выпуска и сжигания токенов TRU, тем самым истощая ETH в протоколе. Инцидент демонстрирует риски, связанные с устаревшими смарт-контрактами. Обновление по ETH: все чаще используются инструменты ИИ для поиска уязвимостей в более старых проектах DeFi.
Оригинальный заголовок: «Анализ уязвимости контракта, приведшая к хищению 26,44 млн долларов протокола Truebit»
Источник оригинала: ExVul Security


8 января 2026 года протокол Truebit Protocol подвергся взлому, в результате которого было украдено 8 535,36 ETH (примерно 26,44 млн долларов США). Официальный представитель Truebit Protocol подтвердил это в публикации, опубликованной в тот же день утром. Команда безопасности ExVul провела подробный анализ уязвимости в ходе этого атакующего события. Результаты анализа следующие:


Процесс атаки


Адрес атакующего:


0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50


Хэш атакующей транзакции:


0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014


Атакующий завершил атаку, вызвав транзакцию getPurchasePrice→0xa0296215→0xc471b10b в течение 4 раундов. В качестве примера рассмотрим первый цикл.


1. Атакующий сначала вызывает функцию getPurchasePrice(240442509453545333947284131), которая возвращает 0.


2. Атакующий вызывает функцию 0xa0296215(c6e3ae8e2cbab1298abaa3) с msg.value, равным 0. В итоге успешно майнится 240442509453545333947284131 TRU.



3. Атакующий вызывает функцию 0xc471b10b(c6e3ae8e2cbab1298abaa3). В итоге уничтожается 240442509453545333947284131 TRU, получается 5105,06 ETH.


Анализ логики атаки


Изучив вышеуказанный процесс атаки, можно ясно увидеть, что в логике функций getPurchasePrice и 0xa0296215 есть проблемы. Ниже приведен подробный анализ (поскольку контракт не открыт, приведенный ниже код является декомпилированным).



Сравнив общие черты двух функций, мы можем обнаружить, что функция 0x1446 предназначена для определения количества ETH, необходимого для покупки заданного количества токенов TRU. Очевидно, что в логике функции 0x1446 есть ошибка, приводящая к неправильному расчету ETH. Ниже приведен подробный анализ логики функции 0x1446.



Наблюдайте за логикой функции 0x1446, поскольку конечный результат вычисления v13 == 0, значит, в логике выше обязательно возникла проблема. Нужно понять, что функция 0x18ef аналогична _SafeMul, поэтому проблема возникает из-за использования встроенного сложения v12 + v9 (версия контракта ^0.6.10, поэтому проверка на переполнение отсутствует).


v12 и v9 соответственно означают:



Согласно вышеуказанному анализу, атакующий использует следующую схему: он вводит очень большое значение _amountIn, чтобы v12 + v9 переполнились и стали очень маленьким числом, в результате чего (v12 + v9) / v6 станет равным 0.


Вывод


Фундаментальной причиной атаки на протокол Truebit стало наличие серьезной уязвимости переполнения целых чисел в логике вычисления цены покупки токена. Поскольку контракт использовал версию Solidity ^0.6.10 и не проводил проверку безопасности при ключевых арифметических операциях, в результате было потеряно 8 535,36 ETH. В настоящее время новые версии Solidity сами по себе смягчают уязвимости переполнения. Мы полагаем, что эта атака, вероятно, была совершена хакерами, которые с помощью ИИ автоматически сканировали уязвимости в старых уже запущенных протоколах DeFi (включая недавние атаки на Balancer и yETH). Мы считаем, что в ближайшее время таких атак, использующих ИИ для атак на старые протоколы DeFi, будет становиться все больше. Поэтому мы рекомендуем проектам провести новую проверку безопасности кода контрактов, при обнаружении уязвимостей как можно скорее обновить контракты или перевести активы, а также настроить мониторинг цепочки, чтобы вовремя обнаруживать аномалии и минимизировать убытки.


Эта статья поступила в качестве гостевой публикации, она не отражает точку зрения BlockBeats.


Нажмите, чтобы узнать о вакансиях в Lulumi BlockBeats


Добро пожаловать в официальное сообщество Lulin BlockBeats:

Telegram-канал с обновлениями:https://t.me/theblockbeats

Telegram-чат:https://t.me/BlockBeats_App

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

Отказ от ответственности: Информация на этой странице может быть получена от третьих лиц и не обязательно отражает взгляды или мнения KuCoin. Данный контент предоставляется исключительно в общих информационных целях, без каких-либо заверений или гарантий, а также не может быть истолкован как финансовый или инвестиционный совет. KuCoin не несет ответственности за ошибки или упущения, а также за любые результаты, полученные в результате использования этой информации. Инвестиции в цифровые активы могут быть рискованными. Пожалуйста, тщательно оценивайте риски, связанные с продуктом, и свою устойчивость к риску, исходя из собственных финансовых обстоятельств. Для получения более подробной информации, пожалуйста, ознакомьтесь с нашими Условиями использования и Уведомлением о риске.