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

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

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

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

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

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

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

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

Безопасная проверка ссылок использует структуру AbstractState для отслеживания локальных переменных и отношений ссылок. Она состоит из двух частей: locals и borrow graph. При валидации будут сравниваться состояния до и после выполнения, и обновления будут объединены.

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

Уязвимость возникает в функции join_, находящейся в состоянии слияния. Эта функция использует тип u8 для итерации по locals, но если количество параметров и локальных переменных превышает 256, это приведет к переполнению целого числа. Хотя есть логика проверки количества 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

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

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

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

MOVE-4.85%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 3
  • Поделиться
комментарий
0/400
WhaleWatchervip
· 07-31 00:57
Патч уже в пути?
Посмотреть ОригиналОтветить0
BlockDetectivevip
· 07-31 00:49
Коррекция очень своевременна.
Посмотреть ОригиналОтветить0
TokenGuruvip
· 07-31 00:41
Опасности нельзя игнорировать
Посмотреть ОригиналОтветить0
  • Закрепить