Skip to main content

DCMTK EUVDEUVD-2026-94941

| CVE-2026-44038 MEDIUM
Out-of-bounds Read (CWE-125)
2026-10-08 securin GHSA-4mfc-mxcx-mmpp
4.8
CVSS 4.0 · Vendor: securin
View

Attack ChainAIDerived

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

  1. Access
    Craft DICOM with malicious JPEG Huffman table
  2. Exploit
    Victim decompresses file via DCMTK (dcmdjpeg)
  3. Execution
    Decoder reads past extend_test[]/extend_offset[] tables
  4. Impact
    Leak adjacent memory into pixels or crash

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 a victim to decompress a crafted JPEG-encoded DICOM file with DCMTK 3.7.0 - specifically a JPEG stream whose Huffman table defines a difference category (SSSS) greater than 15, which is undefined per ISO 10918-1 and drives the out-of-bounds index. The flaw affects default builds because the range-check guard (DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK) is disabled by default; builds that explicitly enable it are NOT vulnerable. Affected entry points include dcmdjpeg and any application that decompresses JPEG DICOM images via the bundled libijg8/12/16 libraries. Limiting factors: attack vector is local (AV:L) - the attacker must deliver the file and the victim must open/process it (UI:P / passive user interaction), there is no network-reachable trigger, no code-execution or integrity impact, and the information disclosure is bounded to memory adjacent to small static lookup tables.

Impact

This is a genuinely low-to-moderate priority issue, and the multiple signals are consistent rather than conflicting. The vendor-supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:L) scores 4.8 (medium), driven down by the local attack vector and required user interaction, and capped at LOW confidentiality/availability impact - consistent with a global out-of-bounds READ (CWE-125) that leaks a small amount of adjacent static-table memory or crashes the decoder, rather than enabling code execution or memory corruption (VI:N / integrity:none). CISA's SSVC framework agrees across the board: Exploitation=none (no observed attacks), Automatable=no (requires a victim to open a crafted file, not mass-scannable), and Technical Impact=partial. There is no CISA KEV listing and no EPSS score was provided, but given no public exploit and a file-parsing local vector, real-world exploitation probability is low. The one nuance worth flagging to teams: the read is out of bounds of small fixed lookup tables (extend_test[]/extend_offset[]), so the 'information disclosure' is bounded and unlikely to leak high-value secrets - and because strict Huffman checking is off by default, default builds ARE vulnerable, which slightly raises exposure relative to a non-default-only flaw. Net: a real but low-severity bug, appropriately patched, not an emergency.

Exploit ScenarioDerived

An attacker crafts a DICOM file containing a JPEG stream whose Huffman table declares a difference (DC) category greater than 15. When a clinician or an automated imaging pipeline decompresses that file with DCMTK (e.g., via dcmdjpeg or any viewer linking the bundled IJG libraries), the Huffman decoder indexes past the extend_test[]/extend_offset[] tables, leaking adjacent static memory into the decoded pixel data or crashing the process. No public exploit code was identified at time of analysis, and exploitation requires the victim to process the attacker-supplied 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 08, 2026

An out-of-bounds read in the bundled IJG JPEG decoders of OFFIS DCMTK 3.7.0 (libijg8, libijg12 and libijg16) lets a crafted DICOM file whose JPEG stream carries a Huffman table with a difference category above 15 drive the decoder past the end of the small static extend_test[] and extend_offset[] lookup tables, producing incorrectly decoded pixel data or a crash and disclosing a bounded amount of adjacent process memory. Exploitation is unauthenticated (CVSS PR:N) but strictly local in vector: the attacker must deliver the file and the victim must decompress it (UI:P), and the same exposure applies to dcmdjpeg and any application that decompresses JPEG DICOM images with DCMTK. Default builds are affected because the DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK guard is disabled by default; no public exploit identified at time of analysis, SSVC records Exploitation: none and Automatable: no, and the vendor fix is available as a source commit.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed. The vendor resolved the issue in DCMTK commit d6ae1bc8d5b9ae9c7300013c8c85cc2ea0fd8cf5 (https://github.com/DCMTK/dcmtk/commit/d6ae1bc8d5b9ae9c7300013c8c85cc2ea0fd8cf5), which introduces an 'if (s > 15)' range check ahead of the HUFF_EXTEND table lookup in libijg8, libijg12 and libijg16; apply this commit or the corresponding release that contains it, and track the vendor issue at https://support.dcmtk.org/redmine/issues/1221 for a tagged version. Where rebuilding is under your control, configuring DCMTK with DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK is a direct compensating control because it performs the same symbol range validation; the trade-off is that it can reject or warn on non-conformant JPEG streams that previously decoded silently, so validate it against your production image archive before rolling it out. Because the attack vector is local and requires the victim to open a malicious file, the practical mitigation is to treat untrusted DICOM input as hostile: process unknown studies in a sandboxed or containerized worker with a low-privilege account and no access to sensitive memory-resident secrets, quarantine files from untrusted senders before import, and monitor dcmdjpeg or DICOM import workers for crashes, since the out-of-bounds read most commonly manifests as abnormal termination. There is no network-reachable trigger, so network filtering is not a meaningful mitigation here. Upgrading to the patched commit is preferable to relying on the build flag, as the flag is off by default and easy to lose in downstream packaging.

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

DCMTK bundles a forked copy of the Independent JPEG Group (IJG) decompressor inside its dcmjpeg module, compiled three times for 8-, 12- and 16-bit sample precision as libijg8, libijg12 and libijg16. In baseline JPEG (DCT) decoding the Huffman-decoded DC coefficient size value 's' (the SSSS category) is passed to the HUFF_EXTEND macro, which indexes two fixed 16-element static tables, extend_test[] and extend_offset[], defined by ISO 10918-1 (Tables F.1 and F.6). The standard defines valid SSSS categories only from 0 to 15 (with SSSS = 16 permitted only in lossless mode per Table H.2), and the bundled IJG code performs no range check on the Huffman symbol value unless the build option DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK is explicitly enabled - which it is not in default builds. Supplying a Huffman table that assigns a code to a category greater than 15 therefore yields a global out-of-bounds read (CWE-125) at the point of table indexing in decode_mcu_DC_first() and decode_mcu() (baseline, jdphuff.c / jdshuff.c) and in decode_mcus() (lossless, jdlhuff.c). The vendor patch adds an explicit 'if (s > 15)' guard in all three precision variants, emits a JWRN_HUFF_BAD_CODE warning and treats the symbol as zero instead of indexing past the arrays. Impact is confined to a read of a few bytes adjacent to small read-only lookup tables, so consequences are limited to corrupted decoded pixel output or a decoder crash rather than memory writes, and the EUVD entry (EUVD-2026-94941) confirms only DCMTK 3.7.0 is affected.

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 4.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 4.4 MEDIUM

Local because a crafted file must be opened (AV:L, UI:R); no auth needed (PR:N); out-of-bounds read yields limited info leak (C:L) and possible crash (A:L) with no integrity impact.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N
Red Hat 4.4 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
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A global out-of-bounds read in the Huffman decoder of the bundled IJG JPEG libraries (dcmjpeg/libijg8, libijg12 and libijg16) of OFFIS DCMTK 3.7.0 allows an attacker to read memory beyond the extend_test[] and extend_offset[] tables, causing incorrectly decoded pixel data or a crash, via a DICOM file with a crafted JPEG stream whose Huffman table defines a difference category above 15. Huffman symbol values are not range-checked unless DCMTK is built with DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK, which is disabled by default. dcmdjpeg and any application that decompresses JPEG DICOM images with DCMTK are affected. The issue is fixed in commit d6ae1bc8d5b9ae9c7300013c8c85cc2ea0fd8cf5.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
DCMTK is a common open-source DICOM toolkit, but medical-imaging-specific
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

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

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