Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted deeply-nested XML/CDA document
-
DeliveryApplication invokes OFXMLParser on untrusted input
-
ExploitRecursive ParseXMLElement() descends per nesting level
-
ExecutionCall stack exhausted
-
ImpactProcess crashes (denial of service)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires the target application to parse an attacker-controlled XML document through DCMTK's bundled parser - concretely, running dcmencap to encapsulate a malicious CDA document, or any program that passes untrusted input to OFXMLParser::parseFile() or OFXMLParser::parseString(). The malicious document must contain element nesting deeper than roughly 512 levels to overflow the stack before the (post-patch) guard would trip. Limiting factors: only DCMTK 3.7.0 is affected; the vendor rates the vector as local (AV:L) with passive user interaction (UI:P), meaning some actor or workflow must feed the file to the parser; and the impact is limited to a process crash (availability only) with no code execution, data disclosure, or persistence. |
| Impact | This is a moderate-severity denial-of-service issue, not a code-execution or data-exposure threat. The vendor-supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, VA:H only, VC:N/VI:N) scores 6.8 and correctly reflects that the sole impact is availability (stack exhaustion → process crash via CWE-674 uncontrolled recursion); there is no confidentiality or integrity impact. No EPSS score, no CISA KEV listing, and no public POC were provided, so exploitation signals point to no public exploit identified at time of analysis - this is a defensively-reported bug (reported by securin, fixed in commit d12e350e) rather than an actively weaponized one. The key tension is attack vector: the vendor rates it AV:L (local), yet the description notes the parser is reachable 'through any application that calls OFXMLParser::parseFile() or parseString() on untrusted input,' which in a server-side DICOM/CDA ingestion pipeline could be remotely reachable - verify the actual exposure of the specific deployment, because a network-facing XML intake path would raise real-world risk above the AV:L rating. Even then, the worst outcome is a crash of the parsing process, patchable by upgrading past 3.7.0, so this is a 'patch-in-normal-cadence' item rather than an emergency unless DCMTK sits on a critical availability path. |
| Exploit ScenarioDerived | An attacker crafts a small XML (or CDA) document containing hundreds of thousands of deeply nested elements and submits it to an application built on DCMTK 3.7.0 - for example a tool that runs dcmencap to encapsulate a CDA document, or any service that feeds untrusted input to OFXMLParser. When the recursive ParseXMLElement() descends through the nesting, the call stack is exhausted and the process crashes, causing denial of service. No public exploit code was provided, but the trigger is trivial to reproduce given the recursive parser design visible in the patch. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Stack exhaustion and process crash in OFFIS DCMTK 3.7.0 can be triggered by feeding the bundled XML parser a crafted document with deeply nested elements, because XMLNode::ParseXMLElement() and XMLNode::emptyTheNode() recurse without a depth limit. An attacker who can make a DCMTK-based tool ingest untrusted XML - most directly by running dcmencap to encapsulate a malicious CDA document, or any application that calls OFXMLParser::parseFile() or OFXMLParser::parseString() on attacker input - can terminate the process at will. The impact is availability only: no code execution, data disclosure, or persistence, and exploitation is constrained by the vendor's assessment of a local vector (AV:L) with passive user interaction (UI:P), meaning some actor or workflow must hand the file to the parser. No public exploit identified at time of analysis; the vendor scores it 6.8 under CVSS 4.0, while our independent assessment scores it CVSS 3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H.
RemediationAI
Apply the upstream fix contained in commit d12e350e687530eb41e2b0c860aff4d8c04e5941, which introduces the XMLMaxRecursionDepth 512 limit and the eXMLErrorRecursionDepthExceeded error code in ofstd/include/dcmtk/ofstd/ofxml.h and ofstd/libsrc/ofxml.cc; per the precision of available data this is an upstream fix available via commit, with a released, tagged patched version not independently confirmed, so the safest route is to track https://support.dcmtk.org/redmine/issues/1214 and consume the first DCMTK release that includes this commit rather than assuming 3.7.0 itself is repaired. If upgrading is not immediately possible, the most effective compensating control is to keep untrusted XML away from the bundled parser: pre-validate or sanitise incoming documents with an external parser configured with an explicit nesting-depth limit, or convert/re-serialise CDA input so that nesting is flattened before it reaches dcmencap or OFXMLParser::parseFile()/parseString() - the trade-off is additional processing and possible rejection of legitimately deep documents. Where the DCMTK-driven workflow must remain online, run it as a low-privilege, resource-capped and monitored process (for example inside a container with restart-on-crash semantics and a tightened ulimit on stack size) so that a crash is contained and observed rather than taking down a shared service; note that ulimit tuning only changes the depth at which the crash occurs and does not remove the defect. Finally, treat any deployment that accepts external CDA or XML files as a crash-availability risk rather than a confidentiality or integrity risk, and prioritise patching by exposure to untrusted input rather than by raw severity score.
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
The flaw is an uncontrolled-recursion defect (CWE-674) inside the XML parser that OFFIS bundles into DCMTK under ofstd/libsrc/ofxml.cc, a component derived from the lightweight pugixml-style XMLNode implementation. Parsing a start tag causes XMLNode::ParseXMLElement() to call itself for each child element, and the teardown path XMLNode::emptyTheNode() recursively walks the same tree; on a document with sufficiently deep element nesting (the patch guard trips above 512 levels) each nested element consumes an additional stack frame until the stack is exhausted and the process aborts. The commit d12e350e687530eb41e2b0c860aff4d8c04e5941 addresses the root cause by threading an explicit depth counter through both functions, adding a new #define XMLMaxRecursionDepth 512 and a corresponding error code eXMLErrorRecursionDepthExceeded that is returned when the limit is exceeded, plus a guarded recursive call in emptyTheNode() that deliberately leaks the remaining subtree rather than overflowing the stack - the source comment states the maintainers accept a memory leak here rather than a stack overflow, noting that in-memory documents deep enough to matter can only be constructed programmatically, since the load routine already rejects them. Reachability is not confined to a single tool: dcmencap reaches the parser while encapsulating CDA documents, and any consumer of OFXMLParser::parseFile() or OFXMLParser::parseString() that accepts untrusted input becomes an attack surface. The supplied CPE cpe:2.3:a:offis:dcmtk:*:*:*:*:*:*:*:* is fully wildcarded on version and therefore does not by itself pin a release, whereas the description, the ENISA EUVD entry (EUVD-2026-94936) and the affected-version list all converge on DCMTK 3.7.0 as the sole affected release; defenders should rely on the version-specific data rather than the wildcard CPE.
Know when Dcmtk 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
Parsing of an attacker-supplied file requires a local vector and user/workflow interaction (UI:R); no privileges needed, and impact is availability-only (crash), so C:N/I:N/A:H.
Primary rating from Vendor (securin).
CVSS VectorVendor: securin
DescriptionCVE.org
Uncontrolled recursion in XMLNode::ParseXMLElement() and XMLNode::emptyTheNode() in the bundled XML parser (ofstd/libsrc/ofxml.cc) of OFFIS DCMTK 3.7.0 allows an attacker to cause a denial of service (stack exhaustion and process crash) via a crafted XML document with deeply nested elements. The parser is reachable through dcmencap when encapsulating a CDA document, and through any application that calls OFXMLParser::parseFile() or OFXMLParser::parseString() on untrusted input. The issue is fixed in commit d12e350e687530eb41e2b0c860aff4d8c04e5941.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
OFFIS.de DCMTK 3.6.3 and below is affected by: Buffer Overflow. Rated critical severity (CVSS 9.8), this vulnerability i
Stack-based buffer overflow in the parsePresentationContext function in storescp in DICOM dcmtk-3.6.0 and earlier allows
Buffer Overflow vulnerability in DCMTK v.3.6.8 allows an attacker to execute arbitrary code via the EctEnhancedCT method
An incorrect type conversion vulnerability exists in the DVPSSoftcopyVOI_PList::createFromImage functionality of OFFIS D
DCMTK v3.6.7 was discovered to contain a memory leak via the T_ASC_Association object. Rated high severity (CVSS 7.5), t
(1) movescu.cc and (2) storescp.cc in dcmnet/apps/, (3) dcmnet/libsrc/scp.cc, (4) dcmwlm/libsrc/wlmactmg.cc, (5) dcmprsc
OFFIS DCMTK's (All versions prior to 3.6.7) service class user (SCU) is vulnerable to relative path traversal, allowing
OFFIS DCMTK's (All versions prior to 3.6.7) service class provider (SCP) is vulnerable to path traversal, allowing an at
dcmdata in DCMTK before 3.6.9 has a segmentation fault via an invalid DIMSE message. Rated medium severity (CVSS 5.3), t
Heap over-read in DCMTK through 3.7.0 allows unauthenticated remote attackers to crash applications or leak adjacent hea
Deeply nested DICOM sequence (SQ) elements delivered to a DCMTK 3.7.0-based service drive the parser into unbounded recu
dcmnet in DCMTK before 3.6.9 has a segmentation fault via an invalid DIMSE message. Rated medium severity (CVSS 4.3), th
EUVD-2026-94936
GHSA-g7gr-959v-68f6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB