NVIDIA SIL GEN3C Unauthenticated RCE via Pickle Deserialization in Inference API
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
1Patches
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- github.com/nv-tlabs/GEN3C/commit/db2ffe12ced12ddafcec5e0422ee46ce8520746bmitrepatch
- www.vulncheck.com/advisories/nvidia-sil-gen3c-unauthenticated-rce-via-pickle-deserialization-in-inference-apimitrethird-party-advisory
- github.com/nv-tlabs/GEN3C/pull/62mitretechnical-description
- github.com/nv-tlabs/GEN3C/pull/63mitreissue-tracking
News mentions
0No linked articles in our index yet.