Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft DICOM with malicious JPEG Huffman table
-
ExploitVictim decompresses file via DCMTK (dcmdjpeg)
-
ExecutionDecoder reads past extend_test[]/extend_offset[] tables
-
ImpactLeak 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (securin).
CVSS VectorVendor: securin
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
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.
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-94941
GHSA-4mfc-mxcx-mmpp
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB