Уязвимость переполнения целых чисел в языке Move: риск безопасности при ссылочной проверке

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

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

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

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

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

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

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

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

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

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

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

Используя этот переполнение, можно изменить состояние базового блока. В присутствии циклического кода, при многократном выполнении одного и того же базового блока, может произойти доступ к несуществующему индексу locals, что приведет к панике и краху узла.

Исследователи предоставили код PoC, который вызывает переполнение целого числа и в конечном итоге приводит к панике, установив определенные параметры и количество локальных переменных.

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

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

MOVE3.75%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 1
  • Поделиться
комментарий
0/400
Hash_Banditvip
· 08-06 01:22
Вопросы безопасности должны быть в центре внимания
Посмотреть ОригиналОтветить0
  • Закрепить