Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Local access to the device is required (AV:L) and the attacker needs low privileges to write the pickle file modeld will load (PR:L); deserialization yields full RCE in the modeld process, giving C:H/I:H/A:H.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
2DescriptionCVE.org
A vulnerability was found in Comma AI Openpilot 0.11. This issue affects the function pickle.load/pickle.loads of the file selfdrive/modeld/modeld.py of the component Pickle Module. The manipulation results in deserialization. The attack is only possible with local access. The vendor was contacted early about this disclosure but did not respond in any way.
AnalysisAI
Insecure deserialization in Comma AI Openpilot 0.11 allows a local authenticated attacker to achieve code execution by supplying a malicious pickle payload to the pickle.load/pickle.loads calls in selfdrive/modeld/modeld.py. The flaw requires local access with low privileges and no public exploit identified at time of analysis, but the vendor reportedly did not respond to coordinated disclosure, leaving the issue unpatched. CVSS 4.0 scores it 7.1 (High) with full confidentiality, integrity, and availability impact on the vulnerable system.
Technical ContextAI
Openpilot is Comma AI's open-source advanced driver-assistance system (ADAS) that runs on dedicated hardware (e.g., comma three) inside a vehicle to control steering, acceleration, and braking. The modeld component (selfdrive/modeld/modeld.py) is the model daemon responsible for loading and running the neural network driving model. The vulnerability is a CWE-502 (Deserialization of Untrusted Data) issue caused by use of Python's pickle.load/pickle.loads on attacker-controllable input - pickle is well known to allow arbitrary code execution during deserialization via crafted __reduce__ gadgets, so any path that feeds untrusted bytes into pickle is effectively a code-execution sink. The single CPE cpe:2.3:a:comma_ai:openpilot:*:*:*:*:*:*:*:* indicates the version range is not narrowly bounded in the published CPE data, though the description names 0.11 specifically.
RemediationAI
No vendor-released patch identified at time of analysis - VulDB reports the vendor was contacted but did not respond, and no fix version or commit appears in the supplied references. As a compensating control, operators should replace pickle.load/pickle.loads in selfdrive/modeld/modeld.py with a safe serialization format (e.g., load model weights via numpy.load with allow_pickle=False, safetensors, or ONNX) so that untrusted byte streams cannot trigger __reduce__ gadgets; this requires regenerating any pickled artifacts the daemon currently consumes. Until the loader is changed, restrict who can write to the model and cache paths that modeld reads from (filesystem permissions, read-only mounts, verified-boot or dm-verity on the comma device image) and avoid running Openpilot images or model files from untrusted third parties, accepting that this breaks community model-swapping workflows. Monitor https://vuldb.com/vuln/370837 and the Openpilot GitHub repository for an upstream fix.
Same weakness CWE-502 – Deserialization of Untrusted Data
View allSame technique Deserialization
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-36670
GHSA-wp3f-pcm8-3jxw