Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
Attacker supplies a malicious model file but the victim must start the server against it (UI:R) and the trigger is local file deserialization (AV:L); successful exploitation yields full code execution, so C/I/A:H.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
4DescriptionCVE.org
CosyVoice thru commit 6e01309e01bc93bbeb83bdd996b1182a81aaf11e (2025-30-21) contains an insecure deserialization vulnerability (CWE-502) in its gRPC server component. When the server starts, it loads the speech synthesis model from a user-specified directory using torch.load() without enabling the weights_only=True security parameter. This allows the deserialization of arbitrary Python objects via the pickle module. An attacker can exploit this by providing malicious model files within a directory. When a victim starts the gRPC server pointing to this directory, arbitrary code is executed on the victim's system during server initialization.
AnalysisAI
Arbitrary code execution in CosyVoice's gRPC server (through commit 6e01309e) occurs because the speech-synthesis model is loaded via torch.load() without weights_only=True, deserializing untrusted pickle data. Any operator who starts the gRPC server against an attacker-supplied model directory executes embedded Python code during initialization. No public exploit has been identified and it is not in CISA KEV; EPSS is negligible at 0.02% (5th percentile), consistent with a file-delivery attack rather than mass remote exploitation.
Technical ContextAI
CosyVoice is an open-source multilingual text-to-speech toolkit (FunAudioLLM). Its gRPC serving component loads a serialized PyTorch model from a user-specified path using torch.load(). PyTorch's torch.load() defaults to Python's pickle module, which reconstructs arbitrary objects by invoking their __reduce__/__setstate__ methods - meaning a crafted .pt/.pth file can run arbitrary code the moment it is deserialized. The fix class is to pass weights_only=True (restricting unpickling to tensors/primitives). The description identifies this as insecure deserialization (CWE-502); note the input feed lists CWE-20 (Improper Input Validation) as the machine-readable weakness, a broader parent class, so treat CWE-502 as the precise root cause.
RemediationAI
No vendor-released patch version is identified at time of analysis; the references point to the project repository (https://github.com/FunAudioLLM/CosyVoice) rather than a tagged fixed release, so track the repo for a commit adding weights_only=True to the torch.load() call and rebuild from that commit once published. As immediate compensating controls: only load model files from trusted, integrity-verified sources (checksums/signatures) and never point the gRPC server at directories writable by or received from untrusted parties; run the server as an unprivileged, sandboxed/containerized user with no outbound network and read-only mounts to limit blast radius if malicious code runs; and, if you build from source, locally patch the load call to pass weights_only=True (trade-off: may break loading of legitimate models that serialize non-tensor Python objects, requiring re-export of trusted models). Restrict filesystem and deployment access so operators cannot be tricked into loading attacker-staged directories.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Same weakness CWE-20 – Improper Input Validation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29098
GHSA-7mm4-fwjj-qfpc