В языке Move существует уязвимость переполнения целого числа в модуле управления ссылками
Недавно была обнаружена серьезная уязвимость переполнения целого числа в модуле безопасной ссылки языка Move. Эта уязвимость может привести к атакам отказа в обслуживании и представляет потенциальную угрозу безопасности языка Move.
Язык Move выполняет проверку кода перед выполнением байт-кода, которая делится на несколько этапов. Эта уязвимость возникает на этапе reference_safety, который отвечает за проверку безопасности ссылок, включая проверку на наличие висячих ссылок и безопасность доступа к изменяемым ссылкам и т.д.
Корень уязвимости заключается в проблеме переполнения целого числа в модуле безопасности. Когда сумма количества параметров функции и количества локальных переменных превышает 256, использование типа u8 для итерации по локальным переменным приводит к переполнению целого числа. Эта уязвимость может быть использована для обхода проверок безопасности, что в конечном итоге может привести к атаке типа "отказ в обслуживании".
Конкретно, процесс эксплуатации уязвимости выглядит следующим образом:
Создайте блок кода Move с циклом, чтобы он выполнялся несколько раз.
Установите множество параметров функций и локальных переменных так, чтобы их общая сумма превышала 256.
При первом выполнении из-за переполнения целого числа длина новой карты локальных переменных станет очень маленьким значением.
При последующем выполнении попытка доступа к несуществующему индексу локальной переменной вызывает панику и сбой программы.
Эта уязвимость показывает, что даже такие языки, как Move, акцентирующие внимание на безопасности, могут иметь игнорируемые уязвимости. Она напоминает нам о важности аудита кода и о необходимости более комплексного учета безопасности в проектировании языков.
Для пользователей и разработчиков языка Move рекомендуется внимательно следить за официальными обновлениями безопасности. В то же время, при написании кода на Move также следует обращать внимание на количество параметров функций и локальных переменных, чтобы избежать возникновения таких предельных ситуаций.
С более宏观ной точки зрения, эта уязвимость также показывает, что полагание только на статическую проверку может быть недостаточным для обеспечения полной безопасности. В будущем язык Move может потребовать добавления большего количества динамических проверок во время выполнения, чтобы предотвратить подобные проблемы с безопасностью.
В целом, обнаружение этой уязвимости еще раз подтверждает важность постоянных исследований в области безопасности для повышения безопасности технологий блокчейна. С расширением применения языка Move в области Web3, мы надеемся увидеть больше мер по улучшению безопасности, чтобы создать более надежную и устойчивую экосистему смарт-контрактов.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
17 Лайков
Награда
17
9
Поделиться
комментарий
0/400
FUDwatcher
· 07-11 15:51
Я все еще говорил о Move на прошлой неделе, когда произошел убыток из-за переполнения.
Посмотреть ОригиналОтветить0
PriceOracleFairy
· 07-10 20:42
омг, двигаюсь, получая убытки от базового переполнения u8... как аудиторы это пропустили, смх
Посмотреть ОригиналОтветить0
ImpermanentLossEnjoyer
· 07-08 18:08
move это тоже провал, да?
Посмотреть ОригиналОтветить0
FastLeaver
· 07-08 18:00
Честно говоря, move теперь G.
Посмотреть ОригиналОтветить0
UnluckyLemur
· 07-08 17:59
move это действительно невыносимо
Посмотреть ОригиналОтветить0
HackerWhoCares
· 07-08 17:58
Слишком плохо 8, даже переполнение может произойти.
Угроза безопасности кода из-за уязвимости целочисленного переполнения в модуле безопасности Move
В языке Move существует уязвимость переполнения целого числа в модуле управления ссылками
Недавно была обнаружена серьезная уязвимость переполнения целого числа в модуле безопасной ссылки языка Move. Эта уязвимость может привести к атакам отказа в обслуживании и представляет потенциальную угрозу безопасности языка Move.
Язык Move выполняет проверку кода перед выполнением байт-кода, которая делится на несколько этапов. Эта уязвимость возникает на этапе reference_safety, который отвечает за проверку безопасности ссылок, включая проверку на наличие висячих ссылок и безопасность доступа к изменяемым ссылкам и т.д.
Корень уязвимости заключается в проблеме переполнения целого числа в модуле безопасности. Когда сумма количества параметров функции и количества локальных переменных превышает 256, использование типа u8 для итерации по локальным переменным приводит к переполнению целого числа. Эта уязвимость может быть использована для обхода проверок безопасности, что в конечном итоге может привести к атаке типа "отказ в обслуживании".
Конкретно, процесс эксплуатации уязвимости выглядит следующим образом:
Создайте блок кода Move с циклом, чтобы он выполнялся несколько раз.
Установите множество параметров функций и локальных переменных так, чтобы их общая сумма превышала 256.
При первом выполнении из-за переполнения целого числа длина новой карты локальных переменных станет очень маленьким значением.
При последующем выполнении попытка доступа к несуществующему индексу локальной переменной вызывает панику и сбой программы.
Эта уязвимость показывает, что даже такие языки, как Move, акцентирующие внимание на безопасности, могут иметь игнорируемые уязвимости. Она напоминает нам о важности аудита кода и о необходимости более комплексного учета безопасности в проектировании языков.
Для пользователей и разработчиков языка Move рекомендуется внимательно следить за официальными обновлениями безопасности. В то же время, при написании кода на Move также следует обращать внимание на количество параметров функций и локальных переменных, чтобы избежать возникновения таких предельных ситуаций.
С более宏观ной точки зрения, эта уязвимость также показывает, что полагание только на статическую проверку может быть недостаточным для обеспечения полной безопасности. В будущем язык Move может потребовать добавления большего количества динамических проверок во время выполнения, чтобы предотвратить подобные проблемы с безопасностью.
В целом, обнаружение этой уязвимости еще раз подтверждает важность постоянных исследований в области безопасности для повышения безопасности технологий блокчейна. С расширением применения языка Move в области Web3, мы надеемся увидеть больше мер по улучшению безопасности, чтобы создать более надежную и устойчивую экосистему смарт-контрактов.