Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed speaches API endpoint
-
DeliverySubmit crafted 'model' parameter
-
ExploitTrigger unsafe reflection in _load_fn
-
ExecutionLoad attacker-selected class/code
-
ImpactPartial confidentiality/integrity/availability impact
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
|
| Exploitation Conditions | Exploitation requires reaching the pyannote diarization model-loading path that calls PyannoteDiarizationModelManager._load_fn with an attacker-supplied 'model' argument; this code was introduced in PR #628 (switch to pyannote audio, commit 870e1e16a73452496e99d49f759eabd692a8e0e0), so only builds including that feature (up to 0.9.0-rc.3) are affected. Per CVSS (AV:N/AC:L/PR:N/UI:N) no authentication or user interaction is required and the attack is remote against a reachable speaches API. Practical limiting factors: the speaches server must be network-exposed, the diarization feature/endpoint must be reachable, and the deployment must run an affected pre-release version; speaches is a niche self-hosted tool, which bounds real-world exposure. |
| Impact | The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 5.5 (medium) and describes a remotely reachable, low-complexity, no-privilege, no-interaction flaw, but constrains impact to VC:L/VI:L/VA:L (only partial confidentiality, integrity and availability). The E:P in the vector is consistent with the confirmed public POC (poc.zip), so exploitation status is 'publicly available exploit code exists' - not active exploitation. This is NOT in CISA KEV, and no EPSS score or SSVC decision was provided, so widespread or automated exploitation cannot be asserted from the data. Net: a genuinely easy-to-trigger remote bug but with modest rated impact in a niche product, making it a moderate rather than top-tier priority. One caveat defenders should verify: CWE-470 (use of externally-controlled input to select classes or code, i.e. unsafe reflection) can in practice escalate to code execution, which would be far more severe than the VulDB-assigned VC:L/VI:L/VA:L - the low impact rating may understate real risk and should be confirmed against the POC. Risk is amplified for internet-exposed instances because the vendor was notified but has not responded and no patch exists. |
| Exploit ScenarioDerived | An attacker who can reach the speaches HTTP API sends a diarization request in which the 'model' argument is manipulated; because PyannoteDiarizationModelManager._load_fn uses that externally-controlled value to select which class or code is loaded (CWE-470), the attacker influences what gets instantiated on the server. A public proof-of-concept (poc.zip) already exists, and the CVSS vector (AV:N/AC:L/PR:N/UI:N) indicates the attack is remote, low-complexity and requires no authentication or user interaction, though the rated impact is limited to partial C/I/A. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Unauthenticated remote attackers can influence which classes or code paths are loaded by the speaches speech server (all builds up to and including 0.9.0-rc.3) by supplying a crafted 'model' argument to PyannoteDiarizationModelManager._load_fn in src/speaches/executors/pyannote_diarization.py. The CVSS 4.0 base score is 5.5 with impact limited to low confidentiality, integrity and availability (VC:L/VI:L/VA:L), and publicly available exploit code exists (a PoC archive is linked from the advisory) - there is no CISA KEV confirmation of active exploitation. Practical exposure is bounded by the need for the server to be network-reachable, the diarization feature to be enabled, and the deployment to run an affected pre-release build of this niche self-hosted tool.
RemediationAI
No vendor-released patch or fixed version was identified at the time of analysis - the upstream project has not responded to issue #679, so version-based remediation is not yet possible; track https://github.com/speaches-ai/speaches/issues/679 and https://vuldb.com/vuln/422250 for a fix. The most direct mitigation is to deploy a build that predates the pyannote switch (before commit 870e1e16a73452496e99d49f759eabd692a8e0e0) or to remove/disable the pyannote diarization executor, accepting that diarization functionality is lost. If diarization must stay enabled, place the speaches API behind an authenticating reverse proxy and restrict the diarization endpoint to trusted clients only, since the flaw is unauthenticated and remotely reachable (PR:N/AV:N) - this reduces exposure but does not fix the underlying class-selection weakness for allowed users. Additionally, front the service with a proxy rule that rejects requests whose model parameter is not on an explicit allowlist of known-good pyannote model identifiers, which blocks the demonstrated PoC payload pattern but may break legitimate model selection if new models are added; never expose the speaches API directly to the internet.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a classic CWE-470 (Use of Externally-Controlled Input to Select Classes or Code) in speaches' pyannote speaker-diarization pipeline. Rather than resolving a fixed model, PyannoteDiarizationModelManager._load_fn takes a caller-supplied 'model' identifier and uses it to determine which model class/pipeline code to instantiate, without an allowlist or sanitization of the value. Because the supplied string steers a class/code-selection decision, an attacker who can reach the diarization model-loading route may be able to force the server to instantiate unintended components, influencing what gets loaded and executed in the inference process. The affected code was added in PR #628 ('feat/switch to pyannote audio'), merged as commit 870e1e16a73452496e99d49f759eabd692a8e0e0, so only builds that include that feature - from that commit through 0.9.0-rc.3 - contain the vulnerable entry point. The CPE record (cpe:2.3:a:speaches-ai:speaches) does not version-pin the product, so inventory matching must be done against the actual source revision or image tag rather than the CPE alone.
Know when Speaches gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Remotely reachable API with no default authentication gives AV:N/AC:L/PR:N/UI:N; CWE-470 class/code selection yields limited partial C/I/A, so C:L/I:L/A:L and S:U.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
2DescriptionCVE.org
A security vulnerability has been detected in speaches-ai speaches up to 0.9.0-rc.3. This vulnerability affects the function PyannoteDiarizationModelManager._load_fn of the file src/speaches/executors/pyannote_diarization.py of the component Pyannote Diarization Model Loading. The manipulation of the argument model leads to use of externally-controlled input to select classes or code. It is possible to initiate the attack remotely. The exploit has been disclosed publicly and may be used. The feature was introduced in PR #628 (feat/switch to pyannote audio), merged as commit 870e1e16a73452496e99d49f759eabd692a8e0e0. The project was informed of the problem early through an issue report but has not responded yet.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-104321
GHSA-3gxp-rhmf-rxp4
NVD
CVE.org
EPSS
VulDB
Exploit-DB