Механізм безпеки посилання мови Move виявив вразливість переповнення цілого числа, що впливає на AptosMoveEVM

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

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

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

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

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

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

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

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

Процес верифікації використовує структуру AbstractState для представлення стану, яка містить дві частини: borrow graph і locals. Під час верифікації виконується генерація коду блоку, що формує post state, а потім цей стан об'єднується з pre state для оновлення стану блоку та поширюється на наступні блоки. Цей процес подібний до концепції Sea of Nodes у V8 turbofan.

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

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

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

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

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

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Поділіться
Прокоментувати
0/400
BoredWatchervip
· 16год тому
Цей баг просто жахливий, як таке може бути таким примітивним?
Переглянути оригіналвідповісти на0
WalletInspectorvip
· 16год тому
Га, використовувати Rust краще, ніж Move.
Переглянути оригіналвідповісти на0
MemecoinTradervip
· 16год тому
лмао, ще один l1 отримав збитки... класичний витік альфа-цілочисельного переповнення
Переглянути оригіналвідповісти на0
LidoStakeAddictvip
· 16год тому
Move знову виникли проблеми, тьфу-тьфу.
Переглянути оригіналвідповісти на0
BuyHighSellLowvip
· 16год тому
Знову здався. Знищте все, почнемо заново.
Переглянути оригіналвідповісти на0
  • Закріпити