Skip to main content

CosyVoice CVE-2026-31251

| EUVDEUVD-2026-29098 HIGH
Improper Input Validation (CWE-20)
2026-05-11 mitre GHSA-7mm4-fwjj-qfpc
7.3
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
7.3 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
vuln.today AI
7.8 HIGH

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.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

4
Analysis Generated
Jul 24, 2026 - 00:06 vuln.today
CVSS changed
May 12, 2026 - 20:22 NVD
7.3 (HIGH)
CVE Published
May 11, 2026 - 00:00 nvd
UNKNOWN (no severity yet)
CVE Published
May 11, 2026 - 00:00 nvd
HIGH 7.3

DescriptionCVE.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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Share

CVE-2026-31251 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy