Xorbits Xoscar: RCE без аутентификации через десериализацию cloudpickle
Xorbits Xoscar позволяет выполнять код без аутентификации
Уязвимость CVE-2026-49950 в Xorbits Xoscar позволяет удаленно выполнять код без аутентификации. Ошибка находится в транспортном уровне фреймворка акторов, а не в конечной точке приложения. Пул акторов — это единица параллелизма в Xoscar, процесс, который размещает акторы и обменивается сообщениями с другими пулами по TCP. Каждое сообщение, достигающее пула, десериализуется с помощью cloudpickle перед проверкой типа сообщения, и на этом пути отсутствует какая-либо аутентификация. Успешная эксплуатация приводит к удаленному выполнению кода с правами процесса пула, обычно root на GPU-узле.
Xoscar служит основой для Xinference и стека Xorbits
Xoscar — это Python-фреймворк для акторов и удаленного вызова процедур (RPC), на котором построены Xinference и более широкий стек Xorbits. Рабочие процессы, супервизор и пулы моделей взаимодействуют друг с другом через пулы акторов Xoscar. Эти пулы формируют каждое сообщение, а затем передают тело в cloudpickle.loads(). Cloudpickle — это расширенная версия pickle с поддержкой объектов. Сообщение, содержащее гаджет reduce, выполняет произвольный код во время десериализации, прежде чем пул проверит тип полученного сообщения. Любой клиент, имеющий доступ к порту актора, выполняет код от имени процесса пула.
Уязвимы все версии Xoscar, начиная с v0.1.0
Уязвимость затрагивает все выпущенные версии Xoscar, начиная с v0.1.0. Уязвимый код присутствует в последнем релизе v0.11.2. Исправленная версия на момент написания отсутствует. В одноузловой установке пул акторов прослушивает случайный локальный порт. Однако в распределенном режиме Xinference пул по умолчанию привязывается к 0.0.0.0, что делает порт доступным в сети. Любой злоумышленник, имеющий доступ к этому порту, включая компрометацию в той же внутренней сети, получает возможность выполнения кода без учетных данных. Эта уязвимость относится к тому же классу десериализации в транспортном уровне, что и проблема Ray "ShadowRay" (CVE-2023-48022).
Изолируйте порты пулов акторов от недоверенных сетей
Поскольку исправленная версия отсутствует, рекомендуется сетевая изоляция. Не следует предоставлять порт пула акторов недоверенным сетям. В распределенных развертываниях Xinference порты супервизора и рабочих процессов должны находиться в частном сегменте сети и не должны быть доступны за пределами кластера. Разместите кластер инференса за строгой сетевой политикой, такой как правила межсетевого экрана, частная подсеть или сервис-меш с взаимной аутентификацией. Это гарантирует, что только предполагаемые узлы-партнеры могут достичь портов. Любой узел, который может получить доступ к пулу акторов, следует рассматривать как способный выполнять на нем код. Необходимо соответствующим образом масштабировать доверие.
Источник