Хак протокола Truebit выявил риски переполнения целых чисел: потеря 26,4 млн долларов в ETH

robot
Генерация тезисов в процессе

12 января компания по безопасности SlowMist раскрыла критический инцидент, связанный с протоколом Truebit, подчеркнув, как уязвимости переполнения целых чисел могут привести к катастрофическим финансовым потерям в децентрализованных системах. Атака, произошедшая 8 января, привела к краже 8 535 ETH (примерно на сумму $26.44 миллиона) через сложную эксплуатацию логики смарт-контракта протокола.

Как переполнение целых чисел позволило осуществить атаку

Основная уязвимость исходила из контракта Purchase протокола Truebit, который не имел достаточных мер защиты от условий переполнения целых чисел. Злоумышленник использовал эту слабость для манипуляции расчетами цен внутри контракта, что позволило ему создавать токены @TRU@ практически без затрат. Это классический пример того, как переполнение целых чисел — когда арифметические операции превышают максимальное значение, которое может удерживать тип данных, вызывая «переполнение» — может быть использовано для вывода средств протокола.

Понимание технического разборa

Корень уязвимости заключался в отсутствии защиты от переполнения при операциях сложения целых чисел. Когда контракт Purchase выполнял арифметические вычисления без должной проверки, он создавал возможность для злоумышленника создавать транзакции, обходящие обычные механизмы определения стоимости токенов. Неправильные расчеты цен позволяли создавать токены значительно ниже их реальной рыночной стоимости, фактически печатая валюту из воздуха, в то время как механизмы безопасности протокола оставались неосведомленными.

Предотвращение переполнения целых чисел: лучшие практики для смарт-контрактов

SlowMist подчеркивает, что разработчики, использующие Solidity версий до 0.8.0, должны внедрять библиотеку SafeMath во все арифметические операции. SafeMath обеспечивает встроенную защиту, которая автоматически отменяет транзакции при обнаружении условий переполнения или недополнения, предотвращая злоумышленников от эксплуатации таких уязвимостей. Для контрактов, созданных с использованием более новых версий Solidity (0.8.0 и выше), язык теперь включает проверяемую арифметику по умолчанию, что устраняет многие — хотя и не все — риски переполнения целых чисел. Этот инцидент подчеркивает критическую важность использования защитных методов программирования и проведения тщательных аудитов безопасности перед развертыванием любых смарт-контрактов в производственной среде.

ETH0,85%
TRU0,32%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить