Протокол Truebit був взломаний на 26,44 млн доларів через вразливість переповнення цілого числа

iconOdaily
Поділитися
Share IconShare IconShare IconShare IconShare IconShare IconCopy
AI summary iconКороткий зміст

expand icon
Протокол Truebit став жертвою експлуатації на 26,44 мільйона доларів 8 січня 2026 року через вразливість переповнення цілого числа в логіці покупки монет. Зловмисник використав помилку в функції 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 у минулі місяці. Ми вважаємо, що подібні атаки, засновані на використанні штучного інтелекту, стануть частішими, тому рекомендуємо командам проектів провести нову перевірку коду контрактів на безпеку, якщо виявлено уразливості, негайно оновити контракти або перевести активи, а також налаштувати моніторинг ланцюга блоків, щоб вчасно виявляти аномалії і мінімізувати збитки.

Відмова від відповідальності: Інформація на цій сторінці може бути отримана від третіх осіб і не обов'язково відображає погляди або думки KuCoin. Цей контент надається лише для загального інформування, без будь-яких запевнень або гарантій, а також не може розглядатися як фінансова або інвестиційна порада. KuCoin не несе відповідальності за будь-які помилки або упущення, а також за будь-які результати, отримані в результаті використання цієї інформації. Інвестиції в цифрові активи можуть бути ризикованими. Будь ласка, ретельно оцініть ризики продукту та свою толерантність до ризику, виходячи з ваших власних фінансових обставин. Для отримання додаткової інформації, будь ласка, зверніться до наших Умов використання та Розкриття інформації про ризики.