Компания 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
Введение:
Компания 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 продолжит обеспечивать безопасность блокчейна и способствовать постоянному развитию технологий и экосистемы.