Skip to main content

sherpa-onnx EUVDEUVD-2026-98232

| CVE-2026-108954 LOW
Classic Buffer Overflow (CWE-120)
2026-10-13 VulDB GHSA-f5q5-vp8g-wh4x
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Deliver tampered model pack to victim
  2. Exploit
    App loads unvalidated model metadata
  3. Execution
    Inconsistent vocab_size overflows decoder buffer
  4. Impact
    Memory corruption or crash

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Buffer copy size validation
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the application to load a malformed or tampered sherpa-onnx offline transducer model pack in which the model-metadata vocab_size is inconsistent with the joiner's actual output dimension; this unvalidated value drives indexing in OfflineTransducerGreedySearchDecoder::Decode and triggers the overflow. LIMITING FACTORS: it is not reachable when only official model packs are used with metadata consistent with the joiner (per vendor), it requires the victim to load/run the attacker-supplied model (passive user interaction, UI:P), and the vendor-rated impact is limited (VC:L/VI:L/VA:L), pointing to crash/DoS or constrained memory corruption rather than confirmed reliable code execution.

Impact

Real-world risk is LOW despite the 'remote buffer overflow' framing. The vendor CVSS 4.0 base score is 2.1 with VC:L/VI:L/VA:L (all limited impact) and UI:P (passive user interaction required), consistent with the description: the flaw is only reachable when a malformed or tampered model pack with inconsistent vocab_size metadata is loaded, and the vendor notes it is 'not reachable in normal supported usage' with official model packs. Signals are mildly conflicting - the CVSS vector lists AV:N/PR:N (network, unauthenticated) and the text says 'the attack can be launched remotely,' yet the true precondition is a victim loading an attacker-supplied/tampered model, which is effectively a malicious-input/supply-chain condition rather than a classic remote-unauthenticated service exploit; verify the vector against the actual data path. Exploitation status: publicly available exploit code exists (referenced GitHub issue), but there is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active or widespread exploitation - POC availability and active exploitation are distinct signals. Net: a legitimate input-validation/robustness bug worth patching, but not an emergency-priority issue; the low CVSS and gating conditions outweigh the public-POC signal.

Exploit ScenarioDerived

An attacker distributes or substitutes a tampered sherpa-onnx offline transducer model pack whose embedded vocab_size metadata is inconsistent with the actual joiner output dimension. When a victim application loads this model and runs greedy-search decoding, OfflineTransducerGreedySearchDecoder::Decode indexes beyond the allocated buffer, causing a buffer overflow (crash or possible memory corruption). A public proof-of-concept is referenced in the project's GitHub issue tracker.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 13, 2026

Loading a malformed or tampered sherpa-onnx offline transducer model pack (versions up to and including 1.13.8) can trigger a buffer overflow in OfflineTransducerGreedySearchDecoder::Decode, because the decoder trusts an unvalidated vocab_size value taken from model metadata to index decoder buffers. The issue is exploited by supplying a model pack whose metadata vocab_size is inconsistent with the joiner's actual output dimension; the attack requires the victim to load that attacker-supplied model, so the CVSS 4.0 vector carries UI:P and our independent assessment rates it CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L with only partial confidentiality/integrity/availability impact. Publicly available exploit code exists via the upstream GitHub issue, but there is no evidence of confirmed active exploitation (not in CISA KEV), and the vendor notes that the bug is not reachable when only official model packs with metadata consistent with the joiner are used, making real-world risk LOW despite the 'remote buffer overflow' framing and the low EPSS-style base score of 2.1.

RemediationAI

No vendor-released patch identified at time of analysis; the upstream issue at https://github.com/k2-fsa/sherpa-onnx/issues/3983 tracks the report, and tracking that issue plus the project repository (https://github.com/k2-fsa/sherpa-onnx/) is the way to obtain the eventual fix, which should validate vocab_size from model metadata against the joiner's actual output dimension before it is used in OfflineTransducerGreedySearchDecoder::Decode. Until a fixed release is published, the most effective control is to restrict decoding to official model packs obtained directly from k2-fsa release channels and to verify their SHA-256 checksums before use, since the vendor confirms the bug is unreachable with official packs whose metadata is consistent with the joiner - the trade-off is that this blocks legitimate third-party or custom-trained transducer models that cannot be cryptographically vouched for. For organizations that must load externally sourced or user-supplied model packs, treat every pack as untrusted input: add a pre-load validation step that parses the metadata and rejects any pack whose vocab_size does not exactly equal the joiner model's output dimension, and reject packs with obviously inflated values; this requires custom tooling and may reject benign but loosely packaged models. Additionally, run the sherpa-onnx inference process under a least-privilege account, in a sandbox/container with memory limits and no access to sensitive data or credentials, so that a triggered overflow degrades to a controlled crash (consistent with the assessed VC:L/VI:L/VA:L impact) rather than host compromise - at the cost of added CPU/memory overhead and operational complexity. Because publicly available exploit code exists, prioritize hardening or sandboxing of any service that accepts model packs from untrusted sources, even though confirmed active exploitation has not been observed.

Affected VersionsENISA

sherpa-onnx 1.13.5
sherpa-onnx 1.13.3
sherpa-onnx 1.13.2
sherpa-onnx 1.13.8
sherpa-onnx 1.13.4
sherpa-onnx 1.13.1
sherpa-onnx 1.13.6
sherpa-onnx 1.13.0
sherpa-onnx 1.13.7

Affected Packages

euvd sherpa_onnx 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

sherpa-onnx (k2-fsa) is an open-source, cross-platform speech-recognition toolkit built on ONNX Runtime that exposes C++, C, Python, Android, iOS, C#, Go, Rust and other bindings; its offline transducer (RNN-T) pipeline pairs an encoder, a predictor and a joiner network, with greedy search decoding implemented in sherpa-onnx/csrc/offline-transducer-greedy-search-decoder.cc. Model packs ship alongside their neural network files a metadata file (e.g. tokens.txt/config) declaring vocab_size, and OfflineTransducerGreedySearchDecoder::Decode uses that unvalidated value when indexing/allocating structures sized from the joiner's real output dimension. CWE-120 (classic buffer overflow / unchecked copy-bound) is the root-cause class here: the decoder assumes metadata is internally consistent rather than bounds-checking vocab_size against the joiner output dimension, so a pack with an inflated or mismatched vocab_size causes out-of-bounds memory access. The CPE cpe:2.3:a:k2-fsa:sherpa-onnx:*:*:*:*:*:*:*:* confirms the whole sherpa-onnx product namespace is treated as affected in the source data. The published CVSS 4.0 vector (AV:N, PR:N, UI:P, VC:L/VI:L/VA:L, E:P) models a network-reachable but user-assisted attack with limited impact, while our independent assessment maps the same behavioral reality to CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L, i.e. the malicious model must be delivered to and opened by the victim-local decode path rather than being remotely triggered without interaction.

Know when Sherpa Onnx 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 2.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
vuln.today AI 5.3 MEDIUM

Real precondition is loading a crafted model file, so AV:L and UI:R; no authentication needed (PR:N); limited, non-scope-changing memory-corruption impact (C/I/A:L).

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/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
Passive
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

3
Severity Changed
Oct 13, 2026 - 02:22 NVD
MEDIUM LOW
CVSS changed
Oct 13, 2026 - 02:22 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Oct 13, 2026 - 01:30 cve.org
LOW 2.1

DescriptionCVE.org

A vulnerability was found in k2-fsa sherpa-onnx up to 1.13.8. This issue affects the function OfflineTransducerGreedySearchDecoder::Decode of the file sherpa-onnx/csrc/offline-transducer-greedy-search-decoder.cc of the component Offline Transducer Greedy Search Decoder. The manipulation of the argument vocab_size results in buffer overflow. The attack can be launched remotely. The exploit has been made public and could be used. If only official model packs are used and they always keep metadata consistent with the joiner, the bug may not be reachable in normal supported usage. However, from a security and robustness standpoint, the code still contains the vulnerability because it trusts unvalidated model metadata and can be triggered by a malformed or tampered model pack.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
niche open-source on-device speech recognition/TTS inference library
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 LOW
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

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