Skip to main content

OFFIS DCMTK EUVDEUVD-2026-94936

| CVE-2026-44033 MEDIUM
Uncontrolled Recursion (CWE-674)
2026-10-08 securin GHSA-g7gr-959v-68f6
6.8
CVSS 4.0 · Vendor: securin
View

Attack ChainAIDerived

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

  1. Access
    Deliver crafted deeply-nested XML/CDA document
  2. Delivery
    Application invokes OFXMLParser on untrusted input
  3. Exploit
    Recursive ParseXMLElement() descends per nesting level
  4. Execution
    Call stack exhausted
  5. Impact
    Process 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.

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

DCMTK 3.7.0

Affected Packages

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

Vendor (securin) 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

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.

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
Red Hat 5.5 MEDIUM

Primary rating from Vendor (securin).

CVSS VectorVendor: securin

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

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

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
de facto open-source DICOM toolkit, but confined to medical imaging sector
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

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

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

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Dcmtk

View all
CVE-2019-1010228 CRITICAL POC
9.8 Jul 22

OFFIS.de DCMTK 3.6.3 and below is affected by: Buffer Overflow. Rated critical severity (CVSS 9.8), this vulnerability i

CVE-2015-8979 HIGH POC
7.5 Feb 15

Stack-based buffer overflow in the parsePresentationContext function in storescp in DICOM dcmtk-3.6.0 and earlier allows

CVE-2024-27628 HIGH POC
8.1 Jun 28

Buffer Overflow vulnerability in DCMTK v.3.6.8 allows an attacker to execute arbitrary code via the EctEnhancedCT method

CVE-2024-28130 HIGH POC
7.5 Apr 23

An incorrect type conversion vulnerability exists in the DVPSSoftcopyVOI_PList::createFromImage functionality of OFFIS D

CVE-2022-43272 HIGH POC
7.5 Dec 02

DCMTK v3.6.7 was discovered to contain a memory leak via the T_ASC_Association object. Rated high severity (CVSS 7.5), t

CVE-2013-6825 HIGH POC
7.2 Jun 10

(1) movescu.cc and (2) storescp.cc in dcmnet/apps/, (3) dcmnet/libsrc/scp.cc, (4) dcmwlm/libsrc/wlmactmg.cc, (5) dcmprsc

CVE-2022-2120 CRITICAL
9.8 Jun 24

OFFIS DCMTK's (All versions prior to 3.6.7) service class user (SCU) is vulnerable to relative path traversal, allowing

CVE-2022-2119 CRITICAL
9.8 Jun 24

OFFIS DCMTK's (All versions prior to 3.6.7) service class provider (SCP) is vulnerable to path traversal, allowing an at

CVE-2024-34509 MEDIUM POC
5.3 May 05

dcmdata in DCMTK before 3.6.9 has a segmentation fault via an invalid DIMSE message. Rated medium severity (CVSS 5.3), t

CVE-2026-97059 HIGH
8.8 Sep 24

Heap over-read in DCMTK through 3.7.0 allows unauthenticated remote attackers to crash applications or leak adjacent hea

CVE-2026-44031 HIGH
8.7 Oct 08

Deeply nested DICOM sequence (SQ) elements delivered to a DCMTK 3.7.0-based service drive the parser into unbounded recu

CVE-2024-34508 MEDIUM POC
4.3 May 05

dcmnet in DCMTK before 3.6.9 has a segmentation fault via an invalid DIMSE message. Rated medium severity (CVSS 4.3), th

Vendor StatusVendor

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