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

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

В механизме безопасного обращения с ссылками языка Move обнаружена новая уязвимость переполнения целого числа

Недавно исследователи по безопасности обнаружили новую уязвимость переполнения целого числа при глубоком анализе Aptos MoveEVM. Эта уязвимость существует в процессе проверки безопасности ссылок языка Move, конкретно на этапе reference_safety.

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

Язык Move выполняет проверку единиц кода перед выполнением байт-кода, что состоит из 4 этапов. Проверка безопасности ссылок является одним из важных этапов, который в основном используется для обеспечения того, чтобы не было висячих ссылок, доступ к изменяемым ссылкам был безопасным, а доступ к ссылкам глобального хранилища был безопасным и т. д.

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

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

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

Процесс верификации использует структуру AbstractState для представления состояния, которая включает в себя две части: граф заимствований и локальные переменные. Во время верификации выполняется генерация кода базового блока для постсостояния, которое затем объединяется с предшествующим состоянием для обновления состояния блока и распространения на последующие блоки. Этот процесс похож на концепцию Sea of Nodes в V8 turbofan.

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

Уязвимость возникает в функции join_. Когда сумма длины параметров функции и длины локальных переменных превышает 256, использование типа u8 для итерации по local приводит к переполнению целого числа. Хотя в Move есть процесс проверки количества locals, он проверяет только locals и не включает длину параметров.

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

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

Используя эту уязвимость, злоумышленник может создать циклический блок кода, используя переполнение для изменения состояния блока. При повторном выполнении, если индекс, который требуется для доступа в инструкции, отсутствует в новой карте локальных переменных, это приведет к DoS.

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

Этот уязвимость снова подчеркивает, что даже такие языки, как Move, которые придают большое значение безопасности, могут иметь проблемы. Рекомендуется разработчикам языка Move добавить больше проверок во время выполнения, а не полагаться только на проверки безопасности на этапе валидации. Также напоминается разработчикам о важности аудита кода.

MOVE5.32%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Поделиться
комментарий
0/400
BoredWatchervip
· 07-20 18:00
Этот баг просто ужасен, как можно быть таким примитивным?
Посмотреть ОригиналОтветить0
WalletInspectorvip
· 07-20 17:59
Эх, лучше использовать Rust, чем Move.
Посмотреть ОригиналОтветить0
MemecoinTradervip
· 07-20 17:58
лmao еще один l1 получает рект... классическая утечка альфа из-за переполнения целого числа
Посмотреть ОригиналОтветить0
LidoStakeAddictvip
· 07-20 17:56
Move снова возникли проблемы. Тьфу-тьфу.
Посмотреть ОригиналОтветить0
BuyHighSellLowvip
· 07-20 17:53
Снова все разваливается. Уничтожь это. Начнем все с начала.
Посмотреть ОригиналОтветить0
  • Закрепить