Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted truncated DMO file
-
ExploitVictim opens file in AdPlug player
-
ExecutionCdmoLoader::load() reads past packed_module
-
ImpactApplication 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
AdPlug 2.3.1 has a double free in the Cu6mPlayer class in u6m.h. Rated critical severity (CVSS 9.8), this vulnerability
An issue was discovered in AdPlug 2.3.1. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable,
AdPlug 2.3.1 has multiple heap-based buffer overflows in CmtkLoader::load() in mtk.cpp. Rated high severity (CVSS 8.8),
AdPlug 2.3.1 has multiple heap-based buffer overflows in CradLoader::load() in rad.cpp. Rated high severity (CVSS 8.8),
AdPlug 2.3.1 has multiple heap-based buffer overflows in Ca2mLoader::load() in a2m.cpp. Rated high severity (CVSS 8.8),
AdPlug 2.3.1 has a heap-based buffer overflow in CmkjPlayer::load() in mkj.cpp. Rated high severity (CVSS 8.8), this vul
AdPlug 2.3.1 has a heap-based buffer overflow in CdtmLoader::load() in dtm.cpp. Rated high severity (CVSS 8.8), this vul
AdPlug 2.3.1 has a heap-based buffer overflow in CxadbmfPlayer::__bmf_convert_stream() in bmf.cpp. Rated high severity (
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
AdPlug through 2.4 contains a heap-based buffer overflow in the KSM (Ken Silverman Music) module player, CksmPlayer::upd
EUVD-2026-102352
GHSA-w9c2-q7vc-jhg6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB