Компанія 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 продовжить забезпечувати безпеку блокчейну, сприяючи постійному розвитку технологій та екосистеми.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
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 продовжить забезпечувати безпеку блокчейну, сприяючи постійному розвитку технологій та екосистеми.