Skip to main content

gbsplay EUVDEUVD-2026-110506

| CVE-2026-116725 MEDIUM
Out-of-bounds Read (CWE-125)
2026-10-26 VulnCheck GHSA-vhg9-cjjj-f7v6
6.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Victim opens crafted .gbs/.gbr/.gb file
  2. Exploit
    mapper_map() accepts out-of-range ROM bank index
  3. Execution
    Underflowed bank length yields oversized read in bank_get()
  4. Impact
    Out-of-bounds heap read crashes player (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

Requires a victim to open an attacker-supplied crafted .gbr, .gbs or .gb file containing a ROM bank index beyond the actual ROM size, in gbsplay version 0.0.103 or earlier. Limiting factors: the attack vector is local and demands user interaction (the user must load the malicious file) - there is no remote or unauthenticated network trigger - and per the source evidence the impact is confined to crashing the player process (availability), with no code execution and no data read back to the attacker. No special product configuration or non-default mode is needed; any affected version parsing the file is susceptible.

Impact

This is a low-to-moderate real-world priority despite the 6.8 CVSS 4.0 score. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H) describes a local, low-complexity flaw with no privileges but passive user interaction, and the impact is confined to availability (VA:H) with no confidentiality or integrity effect - consistent with the description's 'crash the player' outcome and the CWE-125 out-of-bounds read. The multi-source signals align toward low urgency: EPSS is 0.14% (3rd percentile), there is no CISA KEV listing, and the vuln.today decision label is 'this_month' rather than act_now or emergency. The signals are internally consistent - a DoS-only bug in a local media/file parser, triggered only when a user opens a malicious file, is exactly the kind of issue EPSS rates low. The main caveat is that CVSS rates availability impact HIGH, which overstates business risk here because the affected product is a niche Game Boy sound player and the worst case is a crash of that single player process, not a service or system outage. A patch is available from the vendor, so remediation is straightforward.

Exploit ScenarioDerived

An attacker distributes a malicious .gbs, .gbr or .gb file (e.g. via a chiptune archive or download) whose ROM bank index points beyond the actual ROM size. When a victim opens the file in gbsplay 0.0.103 or earlier, mapper_map() computes an underflowed bank length and bank_get() reads far past the heap ROM buffer, crashing the player. A public analysis writeup exists but is not verified as working exploit code; exploitation requires the victim to actively open the crafted file.

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 28, 2026

An out-of-bounds read in gbsplay 0.0.103 and earlier lets a crafted Game Boy sound file crash the player: mapper_map() in mapper.c accepts a ROM bank index larger than the actual ROM, computing an underflowed bank length that bank_get() then reads past the end of the heap-allocated ROM buffer. The attack is local and requires the victim to open a malicious .gbr, .gbs or .gb file (CVSS 4.0 6.8; PR:N but UI:P), and the confirmed impact is a denial of service against the player process rather than code execution or disclosure of data back to the attacker. No public exploit code was identified at time of analysis, and EPSS is low at 0.14% (3rd percentile); an upstream fix commit exists, but a tagged release containing it is not independently confirmed. This is a low-to-moderate real-world priority despite the 6.8 CVSS 4.0 score.

RemediationAI

Apply the upstream fix commit a281d80bc56ed63347daf740a2f7aa4f8516165a (https://github.com/mmitch/gbsplay/commit/a281d80bc56ed63347daf740a2f7aa4f8516165a), which adds an explicit max_banks bound check in mapper_map(), corrects the off-by-one boundaries in bank_get()/bank_put() and only maps bank 1 when the ROM exceeds MAPPER_ROMBANK_SIZE; because the input identifies this as a commit rather than a tagged release, verify whether your distribution's gbsplay package has backported it before relying on a version number alone. Distributions and downstream packagers should carry that commit as a patch against 0.0.103 until a tagged release is available. Where the player cannot be rebuilt immediately, the practical compensating control is to avoid opening untrusted or unknown-origin .gb/.gbs/.gbr files - and to avoid automating gbsplay over downloaded file collections - accepting that this removes the tool's primary use case for untrusted content; running playback in a sandboxed or resource-limited process contains the consequence of the out-of-bounds read, which per the assessment is a crash of the player only. No vendor workaround beyond the code fix is documented in the available references.

Affected VersionsENISA

gbsplay 0 ≤0.0.103

Affected Packages

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

gbsplay emulates the Game Boy sound hardware and loads ROM images (.gb, .gbs, .gbr) into a heap buffer, with mapper.c providing the bank-switching abstraction that memory-mapped reads and writes go through. The flaw is CWE-125 (out-of-bounds read) rooted in missing validation of the bank index: mapper_map() computed the bank offset with size_t arithmetic and used a 'len <= 0' guard that can never be true for an unsigned type, so a bank index beyond the ROM's bank count produced a wrapped/underflowed length instead of a rejection, and bank_get() subsequently read far past the allocated ROM buffer. Per the source evidence, the upstream commit a281d80bc56ed63347daf740a2f7aa4f8516165a restructures the check to compute max_banks = size / b->banksize and reject bank < 0 or bank >= max_banks before computing the offset, tightens the bounds tests in bank_get() and bank_put() from '>' to '>=' against b->size, and changes the upper ROM mapping in mapper_gbs() and mapper_gb() to map bank 1 only when size > MAPPER_ROMBANK_SIZE (falling back to bank 0 for single-bank ROMs). Only the 0.0.103 line of mapper.c (lines 71-103 in the referenced file) is confirmed affected in the available sources; the exact mechanism by which a malformed bank index reaches mapper_map() for each container format is not described in the supplied data beyond the fact that crafted .gbr/.gbs/.gb files can carry it.

Know when Gbsplay 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

File must be opened locally by the user, so AV:L and UI:R; no privileges needed (PR:N); impact is a crash only, so C:N/I:N and A:H.

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

gbsplay through 0.0.103 contains an out-of-bounds read vulnerability in mapper_map() in mapper.c that fails to reject ROM bank indexes beyond the ROM size, causing an underflowed bank length. Attackers can supply crafted .gbr, .gbs or .gb files with malicious bank indexes to make bank_get() read far past the heap ROM buffer and crash the player.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Rare
niche hobbyist Game Boy sound player, negligible enterprise/production footprint
Data Quality
5 sources
Confidence: Medium

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 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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

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