Skip to main content

AdPlug CVE-2026-110877

| EUVDEUVD-2026-102352 MEDIUM
Out-of-bounds Read (CWE-125)
2026-10-15 VulnCheck GHSA-w9c2-q7vc-jhg6
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 truncated DMO file
  2. Exploit
    Victim opens file in AdPlug player
  3. Execution
    CdmoLoader::load() reads past packed_module
  4. Impact
    Application crash (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 an attacker-supplied, specially crafted TwinTeam DMO file that is truncated to 12 or 13 bytes yet still passes the dmo_unpacker::decrypt() check, and the file must be opened/loaded through CAdPlug::factory so that CdmoLoader::load() processes it. Key LIMITING factors: the attack vector is LOCAL (the malicious file must reach the victim's machine), and it requires USER INTERACTION - the victim must actively open or load the file in an AdPlug-based application; there is no remote, network-triggered, or automatic path. No authentication or special privileges are needed, but exploitation only affects the process parsing the file and yields a crash rather than code execution or data disclosure.

Impact

This is a genuine but low-priority memory-safety defect, not an urgent crisis. The provided CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H, base 6.8) describes a local, low-complexity, unauthenticated flaw requiring passive user interaction (opening a crafted file), with impact limited to availability (VA:H) and explicitly no confidentiality or integrity impact (VC:N/VI:N) - consistent with CWE-125 (out-of-bounds read) that reads past a heap allocation and 'potentially crash[es] the application' rather than leaking data to the attacker. Note a tension in the signals: AdPlug is tagged 'Information Disclosure,' but the official CVSS sets VC:N, implying the over-read bytes are not actually returned to the attacker - the realistic outcome is a denial-of-service crash, not data exfiltration; treat the disclosure framing with caution. A public POC exists (reported by VulnCheck), which raises reproducibility, but there is no CISA KEV listing and no EPSS score supplied, so there is no evidence of active or widespread exploitation. Because the attack vector is local and demands that a victim open a malicious file, real-world risk is modest and depends entirely on untrusted-file workflows. One caveat on source integrity: the linked 'exploit' reference (hackmd 'adplug-ksm-note-loop-databuf-oob-write') describes a KSM out-of-bounds WRITE, which is a different code path than the CdmoLoader::load() OOB READ named in this CVE - the POC relevance to THIS specific bug is unverified.

Exploit ScenarioDerived

An attacker crafts a truncated 12- or 13-byte TwinTeam DMO file that still passes dmo_unpacker::decrypt() and distributes it as a music file. When a victim opens it in an application that uses AdPlug (via CAdPlug::factory), CdmoLoader::load() reads beyond the packed_module heap buffer, crashing the player. A public POC is available, so reproduction is straightforward, though exploitation requires local delivery and the victim opening the file.

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 – Oct 15, 2026

Heap out-of-bounds read in AdPlug through 2.4 can crash an application that parses a truncated TwinTeam DMO file, yielding a local availability-only denial of service rather than code execution or data disclosure. The attack requires the victim to open or load a crafted 12- or 13-byte DMO file that still passes dmo_unpacker::decrypt() and reaches CdmoLoader::load() via CAdPlug::factory; publicly available exploit code exists, but exploitation is local and depends on user interaction. The independent assessment rates this as a low-priority memory-safety defect, not an urgent crisis.

RemediationAI

No vendor-released patch identified at time of analysis; check the AdPlug repository (https://github.com/adplug/adplug) and the VulnCheck advisory (https://www.vulncheck.com/advisories/adplug-through-2.4-heap-out-of-bounds-read-via-cdmoloader-load) for an updated release beyond 2.4. Until a fix is available, add pre-parse file validation to reject TwinTeam DMO files smaller than the expected minimum, especially 12- and 13-byte files, and avoid opening untrusted DMO modules in AdPlug-based applications; this blocks the specific truncated-file trigger but could reject malformed or intentionally minimal test files. For server-side or automated parsers, run AdPlug in a sandbox or low-privilege isolated process and treat any crash as a potential denial-of-service event; sandboxing adds operational complexity and may break features that require file or GUI access. Because exploitation requires local file access and user interaction, also restrict automatic file association or batch loading of untrusted module files.

Affected VersionsENISA

adplug 0 ≤2.4

Affected Packages

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

AdPlug is a C++ audio library used to parse and play various tracker/module formats. The vulnerable path is CdmoLoader::load() in src/dmo.cpp, which processes TwinTeam DMO files through dmo_unpacker::decrypt(); the CWE-125 root cause is that a badly truncated file can pass the decrypt check while leaving the loader reading beyond the packed_module heap buffer. The affected CPE cpe:2.3:a:adplug:adplug:*:*:*:*:*:*:*:* indicates the AdPlug product line, matching the description's through 2.4 scope. The CVSS 4.0 input vector is local (AV:L), no privileges required (PR:N), and user interaction (UI:P), and the independent CVSS 3.1 assessment refines this to AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L; the tags mention Buffer Overflow and Information Disclosure, but the assessed impact is only availability, so practical exploitation results in a crash of the parsing process.

Know when Adplug 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 3.3 LOW

Local crafted-file parsing with victim action gives AV:L/UI:R/PR:N; impact is an out-of-bounds read causing a potential crash, so C:N/I:N and A:L.

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

AdPlug through 2.4 contains a heap out-of-bounds read vulnerability in CdmoLoader::load() in src/dmo.cpp that allows attackers to read past a heap allocation by supplying a truncated TwinTeam DMO file. Attackers can supply a 12- or 13-byte file passing dmo_unpacker::decrypt(), opened via CAdPlug::factory, to read bytes beyond packed_module and potentially crash the application.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Low
niche open-source OPL/AdLib music library, limited audio-player footprint
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 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

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.

More in Adplug

View all
CVE-2019-15151 CRITICAL POC
9.8 Aug 18

AdPlug 2.3.1 has a double free in the Cu6mPlayer class in u6m.h. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2018-17825 CRITICAL POC
9.8 Oct 01

An issue was discovered in AdPlug 2.3.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable,

CVE-2019-14734 HIGH POC
8.8 Aug 07

AdPlug 2.3.1 has multiple heap-based buffer overflows in CmtkLoader::load() in mtk.cpp. Rated high severity (CVSS 8.8),

CVE-2019-14733 HIGH POC
8.8 Aug 07

AdPlug 2.3.1 has multiple heap-based buffer overflows in CradLoader::load() in rad.cpp. Rated high severity (CVSS 8.8),

CVE-2019-14732 HIGH POC
8.8 Aug 07

AdPlug 2.3.1 has multiple heap-based buffer overflows in Ca2mLoader::load() in a2m.cpp. Rated high severity (CVSS 8.8),

CVE-2019-14692 HIGH POC
8.8 Aug 06

AdPlug 2.3.1 has a heap-based buffer overflow in CmkjPlayer::load() in mkj.cpp. Rated high severity (CVSS 8.8), this vul

CVE-2019-14691 HIGH POC
8.8 Aug 06

AdPlug 2.3.1 has a heap-based buffer overflow in CdtmLoader::load() in dtm.cpp. Rated high severity (CVSS 8.8), this vul

CVE-2019-14690 HIGH POC
8.8 Aug 06

AdPlug 2.3.1 has a heap-based buffer overflow in CxadbmfPlayer::__bmf_convert_stream() in bmf.cpp. Rated high severity (

CVE-2026-110876 MEDIUM POC
6.8 Oct 15

Out-of-bounds read in AdPlug through 2.4 lets a crafted XSM file (with 'ofTAZ!' signature and a song byte of 0x80 or hig

CVE-2026-110875 MEDIUM
6.9 Oct 15

AdPlug through 2.4 contains a heap-based buffer overflow in the KSM (Ken Silverman Music) module player, CksmPlayer::upd

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