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

У Move знову виявлено небезпечну уразливість: переповнення цілого числа може призвести до краху Ноди

Нещодавно, дослідники безпеки під час глибокого аналізу Aptos Moveevm виявили нову уразливість переповнення цілого числа. Ця уразливість існує в процесі верифікації безпеки посилань мови Move і може призвести до краху ноди.

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

Мова Move перед виконанням байт-коду проходить перевірку коду, що складається з 4 етапів. Ця вразливість виникає на етапі reference_safety. Цей етап в основному призначений для перевірки безпеки посилань, включаючи перевірку на наявність висячих посилань, чи є доступ до змінних посилань безпечним тощо.

Numen Cyber ексклюзивно виявив ще одну критичну вразливість у мові move

Процес верифікації проходитиме через кожен базовий блок і виконуватиме його аналіз. Базовий блок – це послідовність коду, яка не має інструкцій розгалуження, окрім входу та виходу. Мова Move визначає базові блоки, шукаючи інструкції розгалуження та циклів.

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

Під час перевірки безпеки посилань підтримується структура AbstractState, яка містить інформацію про граф позик і локальні змінні. Процес перевірки виконує код базового блоку, генерує стан після виконання, а потім об'єднує його з попереднім станом, оновлює стан блоку та поширює його на наступні блоки.

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

Вразливість виникла в функції join_. Ця функція використовується для об'єднання стану до і після виконання, оновлення locals і графа позик. Коли сума довжини параметрів і довжини локальних змінних перевищує 256, використання типу u8 для ітерації 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, що може викликати panic і призвести до збоїв ноди.

Дослідники надали код PoC, який викликає переповнення цілого числа, налаштувавши певні параметри та кількість локальних змінних, що врешті-решт призводить до паніки.

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

Ця вразливість демонструє, що навіть такі мови, як Move, які приділяють увагу безпеці, можуть мати вразливості. Рекомендується, щоб розробники мови Move додали більше перевірок безпеки під час виконання, а не просто покладалися на перевірки на етапі валідації. Це також підкреслює важливість аудиту коду.

MOVE1.67%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 2
  • Репост
  • Поділіться
Прокоментувати
0/400
BlockchainDecodervip
· 08-08 08:49
Цитування занадто слабке
Переглянути оригіналвідповісти на0
Hash_Banditvip
· 08-06 01:22
Проблеми безпеки повинні бути в центрі уваги
Переглянути оригіналвідповісти на0
  • Закріпити