Анализ уязвимостей компилятора Solidity и стратегии реагирования

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

Анализ уязвимостей компилятора Solidity и меры по их устранению

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

Анализ уязвимостей компилятора Solidity и меры реагирования

Компилятор Solidity не является исключением и имеет уязвимости в нескольких версиях. Роль компилятора Solidity заключается в преобразовании кода смарт-контракта в инструкции кода Ethereum Virtual Machine (EVM). Важно отметить, что уязвимости компилятора Solidity отличаются от уязвимостей самого EVM. Уязвимости EVM могут повлиять на всю сеть Ethereum, в то время как уязвимости компилятора Solidity в основном затрагивают разработчиков смарт-контрактов и пользователей.

Одним из рисков уязвимости компилятора Solidity является возможность того, что сгенерированный EVM-код не соответствует ожиданиям разработчика. Поскольку смарт-контракты обычно связаны с криптовалютными активами пользователей, любые ошибки, вызванные компилятором, могут иметь серьезные последствия. Такие проблемы трудно обнаружить с помощью простого аудита кода, их необходимо анализировать в сочетании с конкретной версией компилятора и кодовыми паттернами.

Вот несколько реальных примеров уязвимостей компилятора Solidity:

  1. SOL-2016-9 HighOrderByteCleanStorage: Уязвимость существует в ранних версиях компилятора Solidity (>=0.1.6 <0.4.4). Поскольку компилятор неправильно обрабатывает операцию очистки старших разрядов после переполнения целого числа, это может привести к случайному изменению значений соседних переменных.

  2. SOL-2022-4 Побочные эффекты встроенной сборкиПамяти: Уязвимость существует в компиляторах версий >=0.8.13 <0.8.15. Из-за неправильной обработки встроенного ассемблерного кода в процессе оптимизации компилятора некоторые операции с памятью могут быть ошибочно оптимизированы.

  3. SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Уязвимость затрагивает компиляторы версий >= 0.5.8 и < 0.8.16. При выполнении операции abi.encode с массивом типа calldata возможно неправильное очищение некоторых данных, что приводит к изменению соседних данных.

Анализ уязвимостей компилятора Solidity и меры по их устранению

В ответ на уязвимость компилятора Solidity команда по безопасности блокчейна Cobo предлагает следующие рекомендации:

Для разработчиков:

  • Используйте более новую версию компилятора Solidity
  • Улучшить тестовые случаи для модулей
  • Избегайте использования встроенной ассемблерной программы, сложной кодировки и декодировки ABI и других операций.
  • Осторожно используйте новые языковые функции и экспериментальные возможности

Для службы безопасности:

  • Учитывайте риски, которые могут быть вызваны компилятором во время аудита безопасности.
  • Продвигать обновление версии компилятора в процессе разработки
  • Ввести автоматическую проверку версии компилятора в процесс CI/CD
  • Оценка фактического влияния уязвимости компилятора в зависимости от конкретной ситуации проекта

Некоторые полезные ресурсы:

  • Официальное предупреждение о безопасности от Solidity
  • Список ошибок, обновленный официальным репозиторием Solidity
  • Список ошибок компилятора для всех версий
  • Функция уведомления о уязвимостях компилятора, предоставляемая Etherscan

Анализ уязвимостей компилятора Solidity и меры реагирования

Следя за безопасностью компилятора, улучшая тестирование, осторожно используя сложные функции и своевременно обновляя версию компилятора, разработчики и специалисты по безопасности могут эффективно снизить риски, связанные с уязвимостями компилятора Solidity, и повысить общую безопасность смарт-контрактов.

SOL-1.16%
ETH0.78%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Поделиться
комментарий
0/400
Rekt_Recoveryvip
· 07-12 06:08
покойся с миром, фонды всех... я был там, потерял все из-за ошибок компилятора в 2018 году, смх
Посмотреть ОригиналОтветить0
RunWhenCutvip
· 07-12 05:51
测不测都得被 разыгрывайте людей как лохов
Посмотреть ОригиналОтветить0
FUDwatchervip
· 07-12 03:11
Этот баг действительно страшный, уходим, уходим!
Посмотреть ОригиналОтветить0
ResearchChadButBrokevip
· 07-09 10:27
С компилятором снова проблемы? Придется ночами исправлять баги.
Посмотреть ОригиналОтветить0
MoonlightGamervip
· 07-09 10:19
Код проверен, проблем нет.
Посмотреть ОригиналОтветить0
GasGuzzlervip
· 07-09 09:58
Все еще пишу смарт-контракты, чувствуется запах неудачников.
Посмотреть ОригиналОтветить0
  • Закрепить