Truebit Protocol взломан на 26,44 млн долларов США из-за уязвимости переполнения целых чисел

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

expand icon
8 января 2026 года протокол Truebit столкнулся с атакой на $26,44 млн из-за уязвимости переполнения целых чисел в логике покупки токенов. Атакующий воспользовался уязвимостью в функции 0x1446, применив цикл для манипуляции большими входными значениями и вызова неправильных расчетов ETH. Уязвимость возникла из-за Solidity ^0,6,10, который не имеет проверок на переполнение. Это происшествие подчеркивает необходимость обновления протокола и усиливает срочность реагирования на уязвимости в DeFi. Команда безопасности ExVul предупреждает, что атаки, управляемые ИИ, на устаревшие протоколы могут возрастать, призывая команды проводить аудиты и внедрять мониторинг.

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. Поэтому мы рекомендуем проектам провести новую проверку безопасности кода контрактов, если будут обнаружены уязвимости, необходимо как можно скорее обновить контракты или перенести активы, а также наладить мониторинг цепочки, своевременно обнаруживать аномалии и минимизировать потери.

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