Мова Move виявила вразливість переповнення цілих чисел у модулі безпеки, що може призвести до атаки та збоїв системи.

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

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

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

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

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

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

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

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

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

Помилка виникає в функції join_. Коли довжина параметрів функції разом з довжиною локальних змінних перевищує 256, використання типу u8 для представлення локальних змінних може призвести до переповнення цілого числа. Хоча мова Move має механізм перевірки кількості локальних змінних, він перевіряє лише кількість локальних змінних, не враховуючи довжину параметрів.

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

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

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

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

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

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

MOVE-1.52%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 9
  • Репост
  • Поділіться
Прокоментувати
0/400
GateUser-aa7df71evip
· 08-19 18:48
Ще один проект має збанкрутувати, переповненість обов'язково призведе до краху.
Переглянути оригіналвідповісти на0
TokenVelocityvip
· 08-17 11:11
Два роки працював, щоб прогодувати всіх, втратив усе, тільки я один ношу тягар, 3000 днів мрії про підприємництво пробудилися.
Переглянути оригіналвідповісти на0
GateUser-0717ab66vip
· 08-16 22:28
Хто переповнить, той сволота
Переглянути оригіналвідповісти на0
ForumLurkervip
· 08-16 22:27
move знову щось замислює?
Переглянути оригіналвідповісти на0
TokenTaxonomistvip
· 08-16 22:23
статистично кажучи, ще один еволюційний мертвий кінець для move... не дивно, якщо чесно
Переглянути оригіналвідповісти на0
SolidityStrugglervip
· 08-16 22:20
Переповнення вразливості справді дратує...
Переглянути оригіналвідповісти на0
RiddleMastervip
· 08-16 22:10
Знову уразливість переповнення, це безкінечно.
Переглянути оригіналвідповісти на0
  • Закріпити