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

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

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

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

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

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

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

  1. Визначення базових кодових блоків
  2. Провести аналіз кожного базового блоку
  3. Стан до і після злиття
  4. Поширення стану до наступних блоків

Ключовим є підтримка структури AbstractState, яка містить locals і borrow graph для забезпечення безпеки посилань.

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

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

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

Конкретно кажучи:

  • iter_locals() повертає ітератор типу u8
  • Виникає переповнення, коли довжина параметра + довжина локальної змінної > 256
  • Розробник перевірив лише кількість локальних змінних, ігноруючи довжину параметрів.

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

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

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

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

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

Демонстрація PoC

Надає відтворюваний код PoC, що містить базовий блок з безкінечним циклом. Встановивши відповідні параметри та довжину локальних змінних, можна викликати DoS.

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

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

Висновок

Ця уразливість ще раз підтверджує:

  1. Не існує абсолютно безпечного коду
  2. Важливість аудиту коду
  3. Для виконання Move потрібні додаткові перевірки безпеки
  4. Статичну верифікацію можна обійти, безпечність під час виконання також важлива

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

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

MOVE-4.86%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 8
  • Поділіться
Прокоментувати
0/400
WhaleMinionvip
· 07-26 05:03
Атака переповнення u8 вже прийшла
Переглянути оригіналвідповісти на0
MevTearsvip
· 07-24 04:19
Цей код хто написав, не перевіривши десять разів.
Переглянути оригіналвідповісти на0
GasFeeCryervip
· 07-23 13:34
Вразливості можна експлуатувати, і ще є DoS, смачно!
Переглянути оригіналвідповісти на0
TopEscapeArtistvip
· 07-23 05:47
Помилки — це повсякденність ведмежого ринку, а під час роботи з криптовалютою потрібно бути особливо обережним.
Переглянути оригіналвідповісти на0
TokenomicsTherapistvip
· 07-23 05:45
Цей баг справді страшний.
Переглянути оригіналвідповісти на0
TxFailedvip
· 07-23 05:43
лмфо класичний переповненіе цілого числа... навчився про це дорогим способом, якщо чесно
Переглянути оригіналвідповісти на0
SchrödingersNodevip
· 07-23 05:40
Це мене лякає, чому так багато проблем?
Переглянути оригіналвідповісти на0
AltcoinMarathonervip
· 07-23 05:40
тримання під час шторми з переповненням цілого... ще одна контрольна точка в веб3 ультра
Переглянути оригіналвідповісти на0
  • Закріпити