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