Skip to main content

Speaches CVE-2026-112145

| EUVDEUVD-2026-104321 MEDIUM
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (CWE-470)
2026-10-19 VulDB GHSA-3gxp-rhmf-rxp4
5.5
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed speaches API endpoint
  2. Delivery
    Submit crafted 'model' parameter
  3. Exploit
    Trigger unsafe reflection in _load_fn
  4. Execution
    Load attacker-selected class/code
  5. Impact
    Partial 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

speaches 0.9.0-rc.3
speaches 0.9.0-rc.0
speaches 0.9.0-rc.1
speaches 0.9.0-rc.2

Affected Packages

euvd speaches no fix

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

Vendor (VulDB) PRIMARY 5.5 MEDIUM
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
vuln.today AI 7.3 HIGH

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.

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
CVSS changed
Oct 19, 2026 - 14:23 NVD
6.9 (MEDIUM) 5.5 (MEDIUM)
CVE Published
Oct 19, 2026 - 13:45 cve.org
MEDIUM 5.5

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

EPSS Score
0.4%
Top 64% exploitable
Prevalence
Low
niche self-hosted open-source speech server, limited production footprint
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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