/

CVE-2026-49950

Severity:

CRITICAL RISK

(9.8)

Unsafe Deserialization (CWE-502) in Xorbits Xoscar

CVE-2026-49950

Deferred

Vulnerability type

Category:

Unsafe Deserialization

CWE:

CWE-502

Impact:

Unauthenticated Remote Code Execution

Severity:

CRITICAL RISK

(9.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Xorbits Xoscar through version 0.11.2 contains an unauthenticated unsafe deserialization vulnerability in its actor-pool TCP communication path. A remote attacker may send crafted data that is deserialized before message validation, potentially enabling arbitrary code execution with the privileges of the server process.

Xorbits Xoscar through version 0.11.2 contains an unauthenticated unsafe deserialization vulnerability in its actor-pool TCP communication path. A remote attacker may send crafted data that is deserialized before message validation, potentially enabling arbitrary code execution with the privileges of the server process.

Affected context

The vulnerability occurs in Xoscar deployments that expose the actor-pool TCP channel and use the affected SocketChannel message-receiving flow. Risk is highest when the channel is reachable by untrusted networks and the service process has elevated privileges, such as on GPU or cluster nodes.

The vulnerability occurs in Xoscar deployments that expose the actor-pool TCP channel and use the affected SocketChannel message-receiving flow. Risk is highest when the channel is reachable by untrusted networks and the service process has elevated privileges, such as on GPU or cluster nodes.

Exploit preconditions

  • Attack surface: The actor-pool TCP communication channel
  • Required access: Network connectivity to the exposed channel; authentication is not required according to the vulnerability description
  • Trigger point: Receipt and processing of serialized data by SocketChannel.recv()
  • Why exploitation is possible: Unvalidated data reaches cloudpickle.loads() before message type validation, allowing deserialization behavior to occur before the application confirms that the message is trusted or structurally valid
  • Attack surface: The actor-pool TCP communication channel
  • Required access: Network connectivity to the exposed channel; authentication is not required according to the vulnerability description
  • Trigger point: Receipt and processing of serialized data by SocketChannel.recv()
  • Why exploitation is possible: Unvalidated data reaches cloudpickle.loads() before message type validation, allowing deserialization behavior to occur before the application confirms that the message is trusted or structurally valid

Why this happens

The underlying bug is unsafe deserialization of attacker-influenced data. The communication layer passes received bytes directly to a powerful serialization mechanism, and deserialization occurs before message validation. Because pickle-compatible serialization can invoke object reconstruction behavior, including __reduce__-based gadget logic, untrusted input may be treated as executable behavior. This maps to CWE-502: Deserialization of Untrusted Data.

The underlying bug is unsafe deserialization of attacker-influenced data. The communication layer passes received bytes directly to a powerful serialization mechanism, and deserialization occurs before message validation. Because pickle-compatible serialization can invoke object reconstruction behavior, including __reduce__-based gadget logic, untrusted input may be treated as executable behavior. This maps to CWE-502: Deserialization of Untrusted Data.

Potential impact

  • An attacker may execute arbitrary code in the Xoscar server process
  • The compromised process could expose or alter data handled by the actor pool
  • Attackers could establish persistence or use the node for further attacks
  • A process running with root or other elevated privileges could increase the scope of compromise
  • GPU or cluster workloads may be disrupted, manipulated, or used for lateral movement
  • An attacker may execute arbitrary code in the Xoscar server process
  • The compromised process could expose or alter data handled by the actor pool
  • Attackers could establish persistence or use the node for further attacks
  • A process running with root or other elevated privileges could increase the scope of compromise
  • GPU or cluster workloads may be disrupted, manipulated, or used for lateral movement

General mitigation guidance

Mitigation generally focuses on removing unsafe deserialization from unauthenticated network paths and reducing the trust placed in serialized messages.

Common defensive patterns include:

  • Prefer data formats that do not support executable object reconstruction
  • Use narrowly scoped, allowlisted serializers when object serialization is required
  • Authenticate and authorize actor-pool connections before accepting application data
  • Validate message framing, type, size, and schema before invoking any decoder
  • Restrict network exposure with segmentation, firewall rules, and private interfaces
  • Run worker and server processes with the minimum required operating-system privileges
  • Apply container, node, and workload isolation to limit the impact of process compromise

Mitigation generally focuses on removing unsafe deserialization from unauthenticated network paths and reducing the trust placed in serialized messages.

Common defensive patterns include:

  • Prefer data formats that do not support executable object reconstruction
  • Use narrowly scoped, allowlisted serializers when object serialization is required
  • Authenticate and authorize actor-pool connections before accepting application data
  • Validate message framing, type, size, and schema before invoking any decoder
  • Restrict network exposure with segmentation, firewall rules, and private interfaces
  • Run worker and server processes with the minimum required operating-system privileges
  • Apply container, node, and workload isolation to limit the impact of process compromise

How teams detect issues like this

Detection can combine code analysis, runtime monitoring, and network policy review:

  • Use static analysis to identify pickle, cloudpickle, or equivalent deserialization of socket-derived data
  • Review code paths where decoding occurs before authentication, authorization, or message validation
  • Flag unrestricted deserialization APIs and dynamically reconstructed object types during code review
  • Monitor actor-pool endpoints for unexpected internet exposure, unauthenticated connections, and abnormal message volume
  • Enforce repository and deployment policies that prohibit unsafe serializers on untrusted network inputs
  • Use automated security review tools to detect CWE-502 patterns and privilege-related exposure

Detection can combine code analysis, runtime monitoring, and network policy review:

  • Use static analysis to identify pickle, cloudpickle, or equivalent deserialization of socket-derived data
  • Review code paths where decoding occurs before authentication, authorization, or message validation
  • Flag unrestricted deserialization APIs and dynamically reconstructed object types during code review
  • Monitor actor-pool endpoints for unexpected internet exposure, unauthenticated connections, and abnormal message volume
  • Enforce repository and deployment policies that prohibit unsafe serializers on untrusted network inputs
  • Use automated security review tools to detect CWE-502 patterns and privilege-related exposure

Sources

SourceLink
github.comgithub.com/xorbitsai/xoscar/blob/v0.11.2/python/xoscar/backends/communication/socket.py#L99-L104
github.comgithub.com/xorbitsai/xoscar/blob/v0.11.2/python/xoscar/serialization/core.pyx#L260
vulncheck.comvulncheck.com/advisories/xorbits-xoscar-unauthenticated-deserialization-rce-via-actor-pool
vulncheck.comvulncheck.com/blog/xorbits-xoscar-unauth-cloudpickle-rce

Frequently asked

questions

Yes. The described attack surface is a TCP channel, and exploitation may be possible remotely without authentication when that channel is reachable by an attacker.

The attacker needs network connectivity to the actor-pool TCP endpoint. The required reachability depends on firewall rules, network segmentation, service exposure, and other deployment controls.

Avoid deserializing untrusted network data with pickle-compatible mechanisms. Use authenticated communication, a constrained data format, and strict validation before decoding or processing messages.

Minimize network exposure, enforce authentication and authorization, apply least privilege to server processes, and use static analysis and code review policies that identify unsafe deserialization paths.

Yes. The described attack surface is a TCP channel, and exploitation may be possible remotely without authentication when that channel is reachable by an attacker.

The attacker needs network connectivity to the actor-pool TCP endpoint. The required reachability depends on firewall rules, network segmentation, service exposure, and other deployment controls.

Avoid deserializing untrusted network data with pickle-compatible mechanisms. Use authenticated communication, a constrained data format, and strict validation before decoding or processing messages.

Minimize network exposure, enforce authentication and authorization, apply least privilege to server processes, and use static analysis and code review policies that identify unsafe deserialization paths.

Find out what's already
exploitable in your codebase.