Автор: Beosin
9 января в ранние часы не открытый исходный код контракта, развернутого Truebit Protocol 5 лет назад, подвергся атаке, в результате чего было потеряно 8 535,36 ETH (стоимостью около 26,4 миллиона долларов). Команда безопасности Beosin провела анализ уязвимости и отслеживания средств по данному инциденту безопасности и делится результатами ниже:

Анализ метода атаки
В данном инциденте мы возьмем за основу анализа одну из главных атакующих транзакций, хэш которой: 0xcd4755645595094a8ab984d0db7e3b4aabde72a5c87c4f176a030629c47fb014
1. Злоумышленник вызывает getPurchasePrice() для получения цены

2. Затем вызывается уязвимая функция 0xa0296215(), и значение msg.value устанавливается крайне малым

Поскольку контракт не имеет открытого исходного кода, на основе декомпилированного кода предполагается, что в данной функции присутствует арифметическая логическая уязвимость, например, проблема усечения целых чисел, что позволило злоумышленнику успешно сгенерировать большое количество токенов TRU.
3. Злоумышленник через функцию burn «продает» сгенерированные токены обратно контракту, извлекая из резерва контракта большое количество ETH.

Этот процесс повторяется еще 4 раза, при этом значение msg.value каждый раз увеличивается, пока почти все ETH из контракта не будут извлечены.
Отслеживание украденных средств
На основе данных о транзакциях в блокчейне, Beosin провела детальное отслеживание средств с помощью своей платформы для расследований и отслеживания в блокчейне BeosinTrace и делится результатами ниже:
В настоящее время украденные 8 535,36 ETH после переводов в основном размещены на адресах 0xd12f6e0fa7fbf4e3a1c7996e3f0dd26ab9031a60 и 0x273589ca3713e7becf42069f9fb3f0c164ce850a.
Из них на адресе 0xd12f находится 4 267,09 ETH, на адресе 0x2735 — 4 001 ETH. На адресе злоумышленника, с которого была начата атака (0x6c8ec8f14be7c01672d31cfa5f2cefeab2562b50), все еще находится 267,71 ETH. По трем адресам пока не было дальнейших переводов средств.

Диаграмма анализа потока украденных средств от Beosin Trace
Все вышеперечисленные адреса уже помечены Beosin KYT как адреса высокого риска, в качестве примера адрес злоумышленника:

Beosin KYT
Заключение
Данные украденные средства связаны с не открытым исходный код смарт-контрактом, развернутым 5 лет назад. Для подобных контрактов проектной команде следует обновить контракт, внедрив аварийную остановку, ограничения параметров, а также новые функции безопасности версий Solidity. Кроме того, аудит безопасности по-прежнему является необходимым этапом для контрактов. С помощью аудита безопасности Web3-компании могут максимально полно протестировать код смарт-контракта, обнаружить и исправить потенциальные уязвимости, повысив безопасность контракта.
*Beosin предоставит полный отчет об анализе всех потоков средств и рисков адресов по данному инциденту. Для получения отчета обращайтесь по официальному email [email protected].





