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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MOVE2.32%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Поделиться
комментарий
0/400
Web3ExplorerLinvip
· 08-01 00:31
Проблему с переполнением нужно срочно проверить.
Посмотреть ОригиналОтветить0
SignatureDeniedvip
· 07-30 09:30
Качество кода необходимо продолжать улучшать
Посмотреть ОригиналОтветить0
WagmiOrRektvip
· 07-29 07:39
Аудит кода очень важен
Посмотреть ОригиналОтветить0
liquidation_watchervip
· 07-29 07:38
Аудит должен идти в ногу
Посмотреть ОригиналОтветить0
WagmiWarriorvip
· 07-29 07:16
Движение действительно опасно.
Посмотреть ОригиналОтветить0
  • Закрепить