Критическая уязвимость в библиотеке NVIDIA Merlin Transformers4Rec позволяет удалённое выполнение кода с правами root

vulnerability

Эксперты по кибербезопасности обнаружили критическую уязвимость в библиотеке машинного обучения NVIDIA Merlin Transformers4Rec, которая позволяет злоумышленникам выполнять произвольный код с привилегиями root на уязвимых системах. Уязвимость, получившая идентификатор CVE-2025-23298, была выявлена специалистами группы Threat Hunting Team проекта Zero Day Initiative (ZDI) компании Trend Micro в ходе аудита систем искусственного интеллекта и машинного обучения на предмет рисков цепочки поставок.

Детали уязвимсоти

Проблема, оцененная по шкале CVSS 3.1 в 9.8 баллов из 10, связана с небезопасной десериализацией в функции load_model_trainer_states_from_checkpoint, которая отвечает за загрузку контрольных точек моделей. Исследователи установили, что в данной реализации используется функция torch.load() из фреймворка PyTorch без применения механизмов изоляции или ограничений на загружаемые классы. Поскольку torch.load() опирается на протокол pickle в Python, это создаёт условия для выполнения произвольного кода в процессе десериализации данных.

Протокол pickle, долгое время считающийся небезопасным для работы с непроверенными данными, позволяет сериализовать и десериализовать сложные объекты Python, включая их исполняемые методы. В случае с Transformers4Rec это означает, что злоумышленник может создать специально сформированную контрольную точку модели, содержащую вредоносный код. При попытке загрузки такой точки срабатывает метод reduce вредоносного объекта, что приводит к немедленному выполнению команд операционной системы с правами пользователя, под которым работает процесс.

Особую опасность эта уязвимость представляет в производственных средах, где службы машинного обучения часто работают с повышенными привилегиями для доступа к ресурсам. Как продемонстрировали исследователи ZDI, успешная эксплуатация уязвимости позволяет злоумышленнику не только получить полный контроль над системой, но и осуществлять кражу данных, устанавливать бэкдоры, а также перемещаться по внутренней сети организации. Уязвимость срабатывает на этапе восстановления состояния модели, ещё до обработки основных параметров, что делает атаку практически незаметной для стандартных средств мониторинга.

NVIDIA оперативно отреагировала на сообщение об уязвимости и выпустила исправление в коммите b7eaea5 (Pull Request #802). Вместо прямых вызовов pickle теперь используется кастомный загрузчик, который ограничивает десериализацию только разрешёнными классами. Новая реализация включает функцию secure load() в модуле serialization.py, которая проверяет типы объектов перед их восстановлением. Это изменение значительно повышает безопасность процесса загрузки моделей.

Однако проблема выходит за рамки конкретной библиотеки и указывает на системные challenges в экосистеме машинного обучения. Многие фреймворки продолжают полагаться на pickle из-за его простоты и универсальности, несмотря на многолетние предупреждения сообщества о рисках. Для предотвращения подобных инцидентов в будущем разработчикам рекомендуется полностью избегать десериализации непроверенных данных pickle, использовать опцию weights_only=True в PyTorch, а также переходить на более безопасные форматы сериализации, такие как safetensors или ONNX.

Со стороны организаций, использующих системы машинного обучения, необходимы дополнительные меры защиты. К ним относятся строгая проверка происхождения моделей, криптографическая подпись контрольных точек, а также изоляция процессов загрузки моделей в песочницах. Регулярное обновление зависимостей и сканирование на уязвимости также являются критически важными практиками.

Обнаружение CVE-2025-23298 вновь подчёркивает настоятельную необходимость разработки и внедрения безопасных стандартов сериализации для всей экосистемы искусственного интеллекта. Поскольку технологии машинного обучения проникают во всё более ответственные области, безопасность их инфраструктуры становится вопросом национальной и корпоративной безопасности. Инцидент служит важным напоминанием о том, что даже в продвинутых технологических стеках могут скрываться фундаментальные пробелы в безопасности, требующие самого пристального внимания разработчиков и специалистов по информационной безопасности.

Ссылки

Комментарии: 0