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

robot
Генерація анотацій у процесі

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

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

Фон вразливості

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

Основний процес перевірки безпеки полягає в:

  1. Розділіть код на базові блоки
  2. Аналіз кожного базового блоку
  3. Об'єднання аналізу стану до і після
  4. Розповсюдження результатів до наступних блоків

Для представлення стану аналізу використовується структура AbstractState, яка містить інформацію про locals та граф позик.

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

Деталі вразливості

Вразливість з'являється у функції join_ в статусі злиття аналізу. Ця функція використовує тип u8 для ітерації локальних змінних, але якщо сума довжини параметра та довжини локальних змінних перевищує 256, виникає переповнення цілого числа.

Конкретніше:

  • використовуйте self.iter_locals() для ітерації locals у join_ функції
  • iter_locals() повертає ітератор типу u8
  • Якщо довжина параметра + довжина локальної змінної > 256, ітератор переповниться

Хоча Move має процес перевірки кількості 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

Використання вразливостей

Зловмисники можуть створити циклічний кодовий блок, використовуючи переповнення для зміни стану блоку:

  1. Налаштуйте кількість параметрів і локальних змінних, що перевищує 256
  2. Після першого виконання довжина нової локальної карти зменшиться через переповнення.
  3. Повторне виконання, доступ до неіснуючого індексу locals призведе до паніки

Це може призвести до відмови в обслуговуванні вузлів.

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

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

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

Вплив уразливості

Ця вразливість може призвести до:

  1. Виникла помилка валідації байт-коду Move
  2. Вузли блокчейну, що залежать від Move, відмовляють у обслуговуванні
  3. Обійти частину перевірок безпеки

Рекомендації щодо виправлення

  1. Додати перевірку довжини параметрів у перевірці меж locals
  2. Використовуйте більші цілісні типи, такі як u16, для перебору locals
  3. Додати додаткові перевірки безпеки під час виконання

Підсумок

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

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

MOVE2.94%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Репост
  • Поділіться
Прокоментувати
0/400
BackrowObservervip
· 08-11 11:51
move знову зазнав невдачі
Переглянути оригіналвідповісти на0
MidnightTradervip
· 08-10 07:32
Це знову якийсь новачок написав код, я в шоці.
Переглянути оригіналвідповісти на0
MevShadowrangervip
· 08-10 07:30
Знову граємо з переповненням цілого числа
Переглянути оригіналвідповісти на0
WagmiOrRektvip
· 08-10 07:29
Ще добре, що я раніше закрити всі позиції Move.
Переглянути оригіналвідповісти на0
CommunityWorkervip
· 08-10 07:27
move знову має вибухнути? Чого панікувати
Переглянути оригіналвідповісти на0
CryingOldWalletvip
· 08-10 07:26
Знову з'явилась вразливість? move вже не так привабливо, правда?
Переглянути оригіналвідповісти на0
  • Закріпити