Компанія TonBit, що належить BitsLab, знову виявила ключову уразливість в віртуальній машині TON і отримала подяку від офіційного представництва TON: інструкція INMSGPARAM не перевіряє наявність нульового вказівника під час обробки параметрів повідомлення, що може призвести до збоїв віртуальної машини TON.
Офіційне виправлення вразливостей TON та подяка. Посилання на деталі TonBit:
Нещодавно, у останньому виході коду TVM (гілка master / TON v2025.04) компанії BitsLab під брендом TonBit було виявлено серйозну загрозу безпеці — інструкція INMSGPARAM не перевіряє вказівники на нуль під час обробки параметрів повідомлення, що може призвести до збоїв у віртуальній машині TON. Ця вразливість також глибоко закладена у процесі глибоких викликів TVM, тому зловмисники можуть, створивши спеціальні параметри повідомлення, викликати віртуальну машину на виконанні з посиланням на нульовий вказівник, що призведе до переривання виконання та серйозно вплине на доступність і стабільність виконання контрактів. Наступний вміст зберігає технічні деталі для глибшого аналізу та запобігання розробниками.
Ми виявили цю уразливість ще до запуску TVM11 і одразу повідомили про неї Ton Core, що дозволило уникнути безпекових ризиків для будь-яких активів у мережі. Ton Core уважно проаналізував наш звіт, виправив цю уразливість до офіційного запуску та виплатив нам винагороду і подяку. Ми щиро вдячні Ton Core за їхній професіоналізм і дотримання зобов'язань.
Код, що потрапив під вплив (розташований у crypto/vm/tonops.cpp), виглядає так:
Основна причина:
Цей рядок коду
Ref t = get_param(st, inmsgparams_idx).as_tuple();
Не була перевірена змінна t на наявність значення nullptr. Якщо слот 0 реєстратора c7 налаштувати на кортеж, елементом 17 якого не є тип Tuple, as_tuple() поверне нульовий покажчик. Коли цей нульовий покажчик t передається в tuple_index, це призведе до розіменування нульового покажчика, що викличе збої віртуальної машини. Ця серйозна помилка стабільно відтворюється в глобальній версії 11 (Global Version 11).
POC код:
Для зручності локального тестування (оскільки global_version зазвичай налаштовується мережею), ми змінили ініціалізацію віртуальної машини в функції run_vm_code, примусово встановивши global_version на 11:
Скопіюйте код PoC у файл crypto/test/vm.cpp.
Змініть run_vm_code згідно з наведеним вище способом, встановіть global_version на 11.
Скомпілювати та виконати виконуваний файл test-vm.
Злам
Віртуальна машина може зламатися через розіменування нульового покажчика:
Підсумовуючи, TonBit, що належить BitsLab, завжди дотримується принципів "глибинної безпеки та відповідального розкриття", постійно виявляючи та виправляючи ключові вразливості в основному коді віртуальної машини TON. Від небезпеки неатомної міграції інструкції RUNVM до проблеми розіменування нульового покажчика в цій інструкції INMSGPARAM, TonBit з професійними технічними здібностями та швидкою реакцією в першу чергу подає звіт до Ton Core та допомагає в ремонті, що не лише ефективно забезпечує безпеку активів на ланцюгу, але й сприяє підвищенню стабільності та надійності TVM. У майбутньому TonBit продовжить тісно співпрацювати з Ton Core та спільнотою, щоб спільно побудувати більш міцний бар'єр безпеки Web3.
Про компанію TonBit
TonBit, як основний підбренд BitsLab, є експертом з безпеки та раннім будівельником у екосистемі TON. Як основний постачальник забезпечення безпеки блокчейну TON, TonBit зосереджується на всебічному аудиті безпеки, включаючи аудит мов Tact і FunC, щоб забезпечити цілісність і стійкість проектів на основі TON. На сьогоднішній день TonBit успішно провів аудит кількох відомих проектів, таких як Catizen, Algebra, UTonic, і виявив кілька ключових вразливостей, демонструючи нашу видатну здатність у сфері безпеки блокчейну. Крім того, TonBit успішно провів змагання TON CTF, яке привабило безліч учасників і отримало широке визнання, що ще більше зміцнило його статус експерта з безпеки в екосистемі TON. У майбутньому TonBit продовжить забезпечувати безпеку блокчейну, сприяючи постійному розвитку технологій та екосистеми.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
BitsLab підрозділ TonBit знову виявив ключову уразливість Віртуальної машини TON та отримав подяку від офіційних представників TON
Автор: TonBit
Вступ:
Компанія TonBit, що належить BitsLab, знову виявила ключову уразливість в віртуальній машині TON і отримала подяку від офіційного представництва TON: інструкція INMSGPARAM не перевіряє наявність нульового вказівника під час обробки параметрів повідомлення, що може призвести до збоїв віртуальної машини TON.
Офіційне виправлення вразливостей TON та подяка. Посилання на деталі TonBit:
Нещодавно, у останньому виході коду TVM (гілка master / TON v2025.04) компанії BitsLab під брендом TonBit було виявлено серйозну загрозу безпеці — інструкція INMSGPARAM не перевіряє вказівники на нуль під час обробки параметрів повідомлення, що може призвести до збоїв у віртуальній машині TON. Ця вразливість також глибоко закладена у процесі глибоких викликів TVM, тому зловмисники можуть, створивши спеціальні параметри повідомлення, викликати віртуальну машину на виконанні з посиланням на нульовий вказівник, що призведе до переривання виконання та серйозно вплине на доступність і стабільність виконання контрактів. Наступний вміст зберігає технічні деталі для глибшого аналізу та запобігання розробниками.
Ми виявили цю уразливість ще до запуску TVM11 і одразу повідомили про неї Ton Core, що дозволило уникнути безпекових ризиків для будь-яких активів у мережі. Ton Core уважно проаналізував наш звіт, виправив цю уразливість до офіційного запуску та виплатив нам винагороду і подяку. Ми щиро вдячні Ton Core за їхній професіоналізм і дотримання зобов'язань.
Код, що потрапив під вплив (розташований у crypto/vm/tonops.cpp), виглядає так:
Основна причина:
Цей рядок коду
Ref t = get_param(st, inmsgparams_idx).as_tuple();
Не була перевірена змінна t на наявність значення nullptr. Якщо слот 0 реєстратора c7 налаштувати на кортеж, елементом 17 якого не є тип Tuple, as_tuple() поверне нульовий покажчик. Коли цей нульовий покажчик t передається в tuple_index, це призведе до розіменування нульового покажчика, що викличе збої віртуальної машини. Ця серйозна помилка стабільно відтворюється в глобальній версії 11 (Global Version 11).
POC код:
Для зручності локального тестування (оскільки global_version зазвичай налаштовується мережею), ми змінили ініціалізацію віртуальної машини в функції run_vm_code, примусово встановивши global_version на 11:
Скопіюйте код PoC у файл crypto/test/vm.cpp.
Змініть run_vm_code згідно з наведеним вище способом, встановіть global_version на 11.
Скомпілювати та виконати виконуваний файл test-vm.
Злам
Віртуальна машина може зламатися через розіменування нульового покажчика:
Підсумовуючи, TonBit, що належить BitsLab, завжди дотримується принципів "глибинної безпеки та відповідального розкриття", постійно виявляючи та виправляючи ключові вразливості в основному коді віртуальної машини TON. Від небезпеки неатомної міграції інструкції RUNVM до проблеми розіменування нульового покажчика в цій інструкції INMSGPARAM, TonBit з професійними технічними здібностями та швидкою реакцією в першу чергу подає звіт до Ton Core та допомагає в ремонті, що не лише ефективно забезпечує безпеку активів на ланцюгу, але й сприяє підвищенню стабільності та надійності TVM. У майбутньому TonBit продовжить тісно співпрацювати з Ton Core та спільнотою, щоб спільно побудувати більш міцний бар'єр безпеки Web3.
Про компанію TonBit
TonBit, як основний підбренд BitsLab, є експертом з безпеки та раннім будівельником у екосистемі TON. Як основний постачальник забезпечення безпеки блокчейну TON, TonBit зосереджується на всебічному аудиті безпеки, включаючи аудит мов Tact і FunC, щоб забезпечити цілісність і стійкість проектів на основі TON. На сьогоднішній день TonBit успішно провів аудит кількох відомих проектів, таких як Catizen, Algebra, UTonic, і виявив кілька ключових вразливостей, демонструючи нашу видатну здатність у сфері безпеки блокчейну. Крім того, TonBit успішно провів змагання TON CTF, яке привабило безліч учасників і отримало широке визнання, що ще більше зміцнило його статус експерта з безпеки в екосистемі TON. У майбутньому TonBit продовжить забезпечувати безпеку блокчейну, сприяючи постійному розвитку технологій та екосистеми.