VYPR
Unrated severityNVD Advisory· Published Jun 17, 2026· Updated Jun 17, 2026

NVIDIA SIL GEN3C Unauthenticated RCE via Pickle Deserialization in Inference API

CVE-2026-53805

Description

NVIDIA Spatial Intelligence Lab's (SIL) GEN3C contains an unauthenticated remote code execution vulnerability in the inference API server where the /request-inference and /seed-model endpoints deserialize raw HTTP request bodies using Python's pickle.loads() without authentication or input validation. Attackers can supply a crafted payload containing a __reduce__ gadget to the inference API port to achieve remote code execution as the inference process.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Affected products

1

Patches

Vulnerability mechanics

Root cause

"The inference API server deserializes raw HTTP request bodies using Python's pickle.loads() without authentication or input validation, allowing arbitrary code execution via a __reduce__ gadget."

Attack vector

An attacker who can reach the inference API port sends a crafted HTTP POST request to either `/request-inference` or `/seed-model` with a `Content-Type` of `application/octet-stream` or `application/json` and a body containing a Python pickle payload with a `__reduce__` gadget [ref_id=1]. Because the server calls `pickle.loads()` on the raw body without any authentication, the gadget executes arbitrary code during deserialization, giving the attacker code execution as the inference process [CWE-502].

Affected code

The vulnerability resides in `gui/api/server.py`, where the `/request-inference` and `/seed-model` endpoints call `pickle.loads()` directly on raw HTTP request bodies without any authentication or input validation [ref_id=1]. The patch replaces this unsafe deserialization with a JSON-based codec in the new file `gui/api/api_serialization.py` that only reconstructs an allow-listed set of dataclasses [patch_id=6466863].

What the fix does

The patch replaces `pickle.loads()` with a new `loads_api_message()` function in `gui/api/api_serialization.py` that deserializes JSON payloads and only reconstructs an allow-listed set of dataclasses (`InferenceRequest`, `SeedingRequest`, `CompressedSeedingRequest`, etc.) [patch_id=6466863]. The server endpoints now validate the `Content-Type` header, requiring either `application/vnd.gen3c.api+json` or `application/json`, and reject any payload that does not match the expected message type. A debug self-check mode (`debug_api_check.py`) verifies that pickle payloads are rejected with a 400 status and never deserialized.

Preconditions

  • networkThe attacker must be able to reach the inference API port (no authentication required).
  • configThe server must be running the vulnerable version of gui/api/server.py that calls pickle.loads() on request bodies.

Generated on Jun 18, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.