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
Share

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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
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

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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
P
Scope
X

Lifecycle Timeline

1
Analysis Generated
Aug 18, 2026 - 15:57 vuln.today

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.

AnalysisAI

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]. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

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

Vulnerability AssessmentAI

Exploitation 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. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment 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. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario 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.
Remediation 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. … Detailed patch versions, workarounds, and compensating controls in full report.

Threat intelligence, references, and detailed analysis are available after sign-in.

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

Share

CVE-2026-75904 vulnerability details – vuln.today

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