Skip to main content

libmodplug CVE-2026-75904

| EUVDEUVD-2026-60967 MEDIUM
Out-of-bounds Read (CWE-125)
2026-08-18 VulnCheck GHSA-prc8-cg98-hxwc
4.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft 32-byte MIDI file with early note event
  2. Delivery
    Deliver file to target user
  3. Exploit
    User opens file in libmodplug-linked application
  4. Execution
    MID_ReadPatterns processes note before program-change
  5. Persist
    pat_smplooped computes smpno-1 = -1
  6. Impact
    pat_loops[-1] read, leaking one static memory byte

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

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

Exploitation Conditions

Exploitation requires a user to open or process a crafted MIDI file using an application that links against libmodplug through 0.8.9.1 - user interaction is required and confirmed by the CVSS 4.0 UI:P metric. The specific trigger is a MIDI note event processed through MID_ReadPatterns before any program-change event has assigned an instrument to the track, so that smpno retains its zero-initialized value when pat_smplooped subtracts one to form the array index. The attack vector is local (AV:L per CVSS 4.0), meaning the malicious file must be delivered to and opened on the target system - no direct network-reachable path exists at the library level, though applications that expose MIDI parsing to remote file uploads would extend this vector. No privileges are required at the library level, but the host application's own access controls govern who can submit files. Exploitation is limited to reading exactly one byte of adjacent static storage; no code execution, memory corruption, or availability impact is described or implied by the available data.

Impact

The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N, score 4.8) accurately reflects the constrained impact: local attack vector, user interaction required, and only low confidentiality exposure limited to one byte of adjacent static memory with no integrity or availability consequences. The vulnerability is absent from the CISA KEV catalog, no weaponized exploit code has been released, and EPSS data was not available in the intelligence provided - all signals pointing to low urgency. Even a mid-sized municipal IT team in inowroclaw deploying MIDI-capable media software would face minimal real-world risk from this vulnerability in isolation, as the one-byte disclosure does not provide a standalone path to code execution or privilege escalation. The primary threat model is applications that parse untrusted MIDI content from external sources, where the leaked static-memory byte could theoretically assist in information-disclosure chains, but no such chained scenario is documented. No patch exists at time of analysis; the only upstream artifact is an open GitHub issue. The low CVSS score is consistent with real-world risk, and this should be treated as a medium-term tracking item rather than an emergency response.

Exploit ScenarioDerived

An attacker crafts a minimal 32-byte MIDI file containing a note event that arrives before any program-change event, leaving smpno at its zero-initialized default when pat_smplooped is called; when a user opens this file in a media player or game that links against libmodplug through 0.8.9.1, the library reads one byte before the pat_loops static array, leaking adjacent static memory into the application's playback state. The technical description in the GitHub issue and source code references provides sufficient detail to reconstruct this trigger condition, though no public proof-of-concept code has been released at time of analysis.

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

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

Alert me

AnalysisAIv1 – Aug 18, 2026

Out-of-bounds read in libmodplug through 0.8.9.1 allows a local attacker to cause the library to read one byte before the static pat_loops array by supplying a crafted 32-byte MIDI file to the ModPlug_Load entry point. The flaw in pat_smplooped (src/load_pat.cpp:213-217) arises because smpno defaults to zero and the function subtracts one before indexing the array without a lower-bound check, so a MIDI note event processed before any instrument assignment triggers pat_loops[-1]. The leaked byte influences loop-playback state and discloses one byte of adjacent static storage; no public exploit code or CISA KEV listing exists at time of analysis.

RemediationAI

No vendor-released patch has been identified at time of analysis; organizations should monitor the upstream repository at https://github.com/Konstanty/libmodplug for a commit or release addressing issue #103, and track the VulnCheck advisory at https://www.vulncheck.com/advisories/libmodplug-out-of-bounds-read-in-pat-smplooped-via-crafted-midi-file for updates. As a compensating control, applications ingesting MIDI files from untrusted sources should validate file structure and reject inputs that do not conform to expected format constraints before passing them to ModPlug_Load, reducing the likelihood of reaching the vulnerable code path, though this does not eliminate the risk. Sandboxing the audio-parsing process using OS-level isolation (seccomp-bpf filters or AppArmor profiles on Linux, or separate low-privilege subprocesses) limits the value of any information disclosure, at the cost of added architectural complexity. Where MIDI playback from external sources is not a required product feature, disabling or removing the libmodplug dependency entirely is the most definitive mitigation available until a patch is released.

Affected VersionsENISA

libmodplug 0 ≤0.8.9.1

Affected Packages

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

libmodplug is a C++ audio module playback library by Konstanty Bialkowski, widely embedded in media players, game engines, and multimedia frameworks for rendering MOD, MIDI, and tracker formats. The affected code path starts at the public ModPlug_Load API, traverses CSoundFile::Create → CSoundFile::ReadMID → MID_ReadPatterns, and arrives at pat_smplooped in src/load_pat.cpp (lines 213-217), with the trigger point in src/load_mid.cpp at line 829. The root cause is CWE-125 (Out-of-bounds Read): the function validates the upper bound of the smpno sample index against MAXSMP but never checks for a zero value before computing smpno - 1 as the index into the 191-byte static array pat_loops. Because smpno is zero-initialized and only updated by a preceding program-change event, a MIDI file that delivers a note event before any program-change assignment carries smpno = 0 into the function, producing an array access at offset -1. The affected CPE is cpe:2.3:a:konstanty_bialkowski:libmodplug:*:*:*:*:*:*:*:*, covering all versions through 0.8.9.1.

Know when Libmodplug 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 (VulnCheck) PRIMARY 4.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.3 LOW

Local file open required with user interaction; single-byte static read yields low confidentiality only, no integrity or availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

libmodplug through 0.8.9.1 contains an out-of-bounds read in pat_smplooped in src/load_pat.cpp. The function validates only the upper bound of its sample index against MAXSMP and then subtracts one before indexing the 191-byte static array pat_loops, so an index of zero reads pat_loops[-1], one byte before the array. The index is the smpno field of a parsed MIDI event, which is initialised to zero and only later overwritten from a program-change parameter, so an event reaching the note test before an instrument is assigned carries zero. A 32-byte MIDI file supplied to the library's public ModPlug_Load entry point drives the path through CSoundFile::Create, CSoundFile::ReadMID, and MID_ReadPatterns to the read. The byte read out of bounds determines whether a note event is treated as looping, so adjacent static storage influences playback state.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
embedded in many media players and game audio engines
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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 No
EPSS 0.1%
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
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
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.

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

Vendor StatusVendor

SUSE

Severity: Low
Product Status
SUSE Linux Enterprise High Performance Computing 12 Affected
SUSE Linux Enterprise High Performance Computing 12 SP5 Affected
SUSE Linux Enterprise Server 12 SP5 Affected
SUSE Linux Enterprise Server 12 SP5-LTSS Affected
SUSE Linux Enterprise Server 12 SP5-LTSS Extended Security Affected

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