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

Анализ методов атак
В данном случае мы проводим анализ, основываясь на самом главном хэше транзакции атаки: 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
Все вышеуказанные адреса были отмечены как высокорисковые KYT Beosin. Например, адрес злоумышленника:

Beosin KYT
Заключение
Украденные средства касаются смарт-контракта, который не был открыт для общественности пять лет назад. Что касается таких контрактов, команда проекта должна обновить контракт, внедрив экстренное отключение, ограничение параметров и новые версии безопасных функций Solidity. Кроме того, безопасная экспертиза остается неотъемлемой частью контракта. Благодаря безопасной экспертизе, компании Web3 могут как можно более полно проверить код смарт-контракта, обнаружить и устранить потенциальные уязвимости, повысив таким образом безопасность контракта.
Beosin предоставит полный отчет по анализу всех потоков средств и рисков адресов. По всем вопросам обращайтесь на официальную почту support@beosin.com.


