В языке Move обнаружена уязвимость целочисленного переполнения в модуле безопасности
Недавно исследователи в области безопасности обнаружили новую уязвимость переполнения целого числа в модуле проверки безопасности языка Move. Эта уязвимость возникает на этапе reference_safety процесса проверки кода и может привести к атаке типа отказ в обслуживании.
Язык Move выполняет проверку кода перед выполнением байт-кода, которая делится на 4 шага. reference_safety является одним из важных шагов, предназначенным для проверки безопасности ссылок, включая проверку наличия висячих ссылок, безопасность доступа к изменяемым ссылкам и т.д.
Уязвимость связана с обработкой количества локальных переменных в процессе проверки безопасности ссылок. В функции join_ если сумма количества параметров функции и количества локальных переменных превышает 256, это приведет к переполнению типа u8. Хотя в языке Move существует процесс проверки количества локальных переменных, он проверяет только количество локальных переменных, не включая количество параметров.
Атакующие могут создать специальный код Move, используя эту уязвимость переполнения для изменения состояния блока кода. Когда блок кода выполняется снова, если индекс, который должен быть доступен в инструкциях, отсутствует в новой локальной переменной, это приведет к панике, что вызовет сбой узла.
Исследователи безопасности предоставили доказательство концепции (PoC) кода, которое путем установки множества параметров и локальных переменных вызывает переполнение целого числа, что в конечном итоге приводит к панике.
Эта уязвимость еще раз подтверждает, что даже хорошо спроектированные языки могут иметь проблемы с безопасностью. Для языка Move рекомендуется добавить больше проверок безопасности во время выполнения, а не полагаться только на проверки на этапе валидации. Это также подчеркивает важность аудита кода, который может своевременно выявлять упущения разработчиков.
В качестве пионеров в области безопасности языка Move, команда безопасности заявила, что будет продолжать углубленное исследование проблем безопасности Move. Они также обнаружили еще одну уязвимость языка Move и в дальнейшем раскроют больше деталей.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
4
Поделиться
комментарий
0/400
SoliditySlayer
· 07-11 20:03
Уязвимости есть каждый день, ничего страшного.
Посмотреть ОригиналОтветить0
BlockchainGriller
· 07-11 20:02
Снова вижу баги, песни Move становятся всё более загадочными~
Уязвимость переполнения целого числа в модуле безопасности Move языка может привести к сбою узла
В языке Move обнаружена уязвимость целочисленного переполнения в модуле безопасности
Недавно исследователи в области безопасности обнаружили новую уязвимость переполнения целого числа в модуле проверки безопасности языка Move. Эта уязвимость возникает на этапе reference_safety процесса проверки кода и может привести к атаке типа отказ в обслуживании.
Язык Move выполняет проверку кода перед выполнением байт-кода, которая делится на 4 шага. reference_safety является одним из важных шагов, предназначенным для проверки безопасности ссылок, включая проверку наличия висячих ссылок, безопасность доступа к изменяемым ссылкам и т.д.
Уязвимость связана с обработкой количества локальных переменных в процессе проверки безопасности ссылок. В функции join_ если сумма количества параметров функции и количества локальных переменных превышает 256, это приведет к переполнению типа u8. Хотя в языке Move существует процесс проверки количества локальных переменных, он проверяет только количество локальных переменных, не включая количество параметров.
Атакующие могут создать специальный код Move, используя эту уязвимость переполнения для изменения состояния блока кода. Когда блок кода выполняется снова, если индекс, который должен быть доступен в инструкциях, отсутствует в новой локальной переменной, это приведет к панике, что вызовет сбой узла.
Исследователи безопасности предоставили доказательство концепции (PoC) кода, которое путем установки множества параметров и локальных переменных вызывает переполнение целого числа, что в конечном итоге приводит к панике.
Эта уязвимость еще раз подтверждает, что даже хорошо спроектированные языки могут иметь проблемы с безопасностью. Для языка Move рекомендуется добавить больше проверок безопасности во время выполнения, а не полагаться только на проверки на этапе валидации. Это также подчеркивает важность аудита кода, который может своевременно выявлять упущения разработчиков.
В качестве пионеров в области безопасности языка Move, команда безопасности заявила, что будет продолжать углубленное исследование проблем безопасности Move. Они также обнаружили еще одну уязвимость языка Move и в дальнейшем раскроют больше деталей.