Обнаружена уязвимость переполнения целых чисел в языке Move: существует риск, связанный с проверкой безопасности.

Язык Move повторяет уязвимость переполнения целого числа

Недавно была обнаружена серьезная уязвимость переполнения целого числа в языке Move. Эта уязвимость возникает на этапе проверки безопасности ссылок и может привести к атаке типа "отказ в обслуживании". Путем глубокого анализа этой уязвимости мы можем получить более глубокое понимание языка Move.

Язык Move выполняет проверку кода перед исполнением байт-кода, которая делится на четыре этапа. Уязвимость возникает на этапе reference_safety. Модуль reference_safety отвечает за проверку законности операций с ссылками, включая проверку наличия висячих ссылок и безопасность доступа к изменяемым ссылкам.

Numen Cyber обнаружил еще одну уязвимость в языке move

Процесс верификации осуществляется по единицам функции. Для каждой функции сначала определяются ее базовые блоки. Базовый блок представляет собой последовательность кода, в которой возможны разветвления только на входе и выходе. Затем каждый базовый блок анализируется, генерируются состояния до и после выполнения, и состояния передаются в последующие блоки.

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Состояние включает в себя две части информации: locals и borrow graph. locals записывает информацию о локальных переменных, а borrow graph отображает отношения ссылок между переменными. Процесс анализа постоянно обновляет эту информацию о состоянии.

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

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

Numen Cyber эксклюзивно обнаружил еще одну высокую уязвимость в языке move

Хотя язык Move имеет механизм проверки количества локальных переменных, он не учитывает количество параметров. Этот упущение привело к возникновению уязвимости.

Numen Cyber обнаружил еще одну уязвимость в языке move

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

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Этот уязвимость еще раз подчеркивает, что даже тщательно разработанные языки могут иметь проблемы с безопасностью. Это напоминает нам о важности аудита кода и о том, что в дизайне языка необходимо учитывать более полные аспекты безопасности. Для языка Move добавление большего количества проверок во время выполнения может быть направлением для улучшения.

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил ещё одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну высокоопасную уязвимость языка move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

Numen Cyber эксклюзивно обнаружил еще одну уязвимость в языке move

MOVE-3.95%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Репост
  • Поделиться
комментарий
0/400
CryptoPhoenixvip
· 08-14 11:11
Не беспокойтесь о нижнем диапазоне, путь к восстановлению только начинается... Разве так плохо, как в 2018 году?
Посмотреть ОригиналОтветить0
GateUser-a606bf0cvip
· 08-12 07:20
движение слишком нестабильно
Посмотреть ОригиналОтветить0
down_only_larryvip
· 08-11 17:32
Почему снова движение рухнуло?
Посмотреть ОригиналОтветить0
TommyTeacher1vip
· 08-11 17:31
Снова нужно исправлять баги!
Посмотреть ОригиналОтветить0
  • Закрепить