Skip to main content

libgme CVE-2026-111152

| EUVDEUVD-2026-102279 MEDIUM
Out-of-bounds Read (CWE-125)
2026-10-15 VulnCheck
6.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Deliver crafted ZXAYEMUL .ay file
  2. Delivery
    Victim opens file in libgme consumer
  3. Exploit
    Integer underflow bypasses track-table bounds check
  4. Execution
    get_data reads past heap buffer
  5. Impact
    Process crashes (denial of service)

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 that the target application link libgme (Game Music Emu) version 0.6.5 or earlier AND that it parse an attacker-supplied ZXAYEMUL (AY-format) file by calling gme_track_info or gme_start_track. The crafted file must contain an oversized track-table count that underflows the file_size - 2 bounds check in Ay_Emu.cpp get_data. Limiting factors: the attack is LOCAL (AV:L) - the malicious file must reach the victim's machine - and requires passive user interaction (UI:P), i.e. the victim must open/process the file; there is no network-remote or unauthenticated-service exposure, and the impact is confined to crashing the consuming process rather than code execution or confirmed data disclosure.

Impact

This is a moderate, low-urgency issue despite being backed by multiple corroborating sources. The authoritative CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, score 6.8) shows the defining constraints: exploitation is LOCAL and requires PASSIVE user interaction (UI:P) - a victim must open or process a crafted ZXAYEMUL file. The only impact is availability (VA:H / VC:N / VI:N): a heap out-of-bounds read that crashes libgme consumers, i.e. a denial-of-service, not code execution or data theft. A public exploit (the hackmd write-up by VulnCheck) and a vendor patch both exist, and the root cause is independently confirmable from the GitHub commit diff (an integer-underflow in the file_size - 2 bounds check, fixed by replacing an assert with an explicit guard). It is NOT in CISA KEV and no EPSS score was provided, so there is no evidence of active or widespread exploitation - consistent with a file-parsing DoS in a specialized library rather than a mass-exploitation target. Note one tension to flag: the Tags include 'Information Disclosure' and the bug is an out-of-bounds READ (which can in principle leak adjacent heap memory), yet the authoritative CVSS marks confidentiality VC:N - treat the demonstrated impact as a crash/DoS and verify any memory-disclosure claim against the VulnCheck advisory before relying on it.

Exploit ScenarioDerived

An attacker crafts a malicious ZXAYEMUL (.ay) chiptune file whose track table declares an oversized count, then distributes it so a victim opens it in a media player, emulator, or thumbnailer that links libgme. When the application calls gme_track_info or gme_start_track, the underflowed bounds check lets get_data read past the file buffer and crash the process. Public exploit/write-up material is available from VulnCheck demonstrating the out-of-bounds read.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Heap out-of-bounds read in libgme (Game Music Emu) through 0.6.5 allows local attackers to crash applications that parse a crafted ZXAYEMUL (AY-format) file through gme_track_info or gme_start_track. The root cause is an integer underflow in the AY loader's track-table bounds check in gme/Ay_Emu.cpp; the assessed impact is denial of service (process crash) with no confirmed code execution or data disclosure, and exploitation requires that the victim opens or otherwise processes a malicious file. Publicly available exploit code exists, but there is no CISA KEV confirmation of active exploitation, and the assessed CVSS:3.1 vector is AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H.

RemediationAI

Apply the upstream fix commit ae10a8f05479e3c8f80429e7a59759fed06f8c13, which replaces the debug-only assert in gme/Ay_Emu.cpp get_data with an explicit bounds check that returns 0 when pos exceeds file_size-2; because the input data does not identify a tagged release, this is an upstream fix available (PR/commit) and a released patched version is not independently confirmed, so downstream consumers should track the libgme repository and advisories such as the VulnCheck advisory (https://www.vulncheck.com/advisories/game-music-emu-libgme-through-0.6.5-heap-out-of-bounds-read-via-ay-loader). Until a patched build is deployed, avoid opening or parsing untrusted ZXAYEMUL/AY files in applications linked against libgme, and consider disabling or restricting AY-format support in player/emulator front-ends, validating track-table counts before calling gme_track_info or gme_start_track, and sandboxing the parsing process (limited user privileges, container, or similar isolation) to contain the denial-of-service crash; these compensating controls trade off legitimate AY emulation functionality and do not remediate the underlying bug. Note that the publicly available exploit code raises the importance of timely patching or restricting untrusted file parsing, even though no active exploitation has been confirmed via CISA KEV.

Affected VersionsENISA

game-music-emu 0 ≤0.6.5

Affected Packages

euvd game_music_emu 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 vulnerability is an out-of-bounds read (CWE-125) in the AY/ZXAYEMUL loader of Game Music Emu (libgme), a library used by emulators and music players to play chiptune formats. In get_data within gme/Ay_Emu.cpp, the original code relied on an assert that could be disabled in release builds: it checked (unsigned long) pos <= (unsigned long) file_size - 2. When an attacker-supplied ZXAYEMUL file declares an oversized track-table count, the unsigned subtraction file_size - 2 underflows to a very large value, so the bounds check passes incorrectly and the function reads past the end of the file buffer. The fix in commit ae10a8f05479e3c8f80429e7a59759fed06f8c13 replaces the debug-only assert with a real runtime check returning 0 when pos > file_size - 2, preventing reads beyond the buffer. The affected product is captured by CPE cpe:2.3:a:libgme:game-music-emu:*:*:*:*:*:*:*:* (versions through 0.6.5), and the vulnerable entry points are gme_track_info or gme_start_track when processing AY files.

Know when Game Music Emu 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 6.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.5 MEDIUM

Local crafted-file parsing with required victim interaction (AV:L/UI:R), no privileges needed (PR:N), and only a crash - so A:H with C:N/I:N.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA: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
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Game Music Emu (libgme) through 0.6.5 contains a heap out-of-bounds read vulnerability in the AY loader get_data function caused by an integer underflow in the track-table bounds check. Attackers can supply a crafted ZXAYEMUL file with an oversized track table to read past the file buffer via gme_track_info or gme_start_track, crashing libgme consumers.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
chiptune decoder library embedded in various media players and emulators
Exploit
POC
Public exploit code exists
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.1%
Patch available Yes
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

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

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