CVE-2024-22373
High · 8.1CVSS
8.1
EPSS
1.7%
Published
Apr 25, 2024
CISA due date
—
Cloudanix analysis
A bug in software that reads medical scan files can let a bad file take over the computer that opens it.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Full Compromise
- Component
- Library
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability permits an out-of-bounds write during JPEG2000 stream decoding in the DICOM library, resulting in a heap buffer overflow that can corrupt memory and enable arbitrary code execution.
Why it matters to the business
Successful exploitation could allow attackers to compromise systems handling medical imaging data, risking unauthorized access to sensitive patient information, disruption of clinical workflows, and potential regulatory penalties in healthcare settings.
How an attack unfolds
An attacker creates a malformed DICOM file embedding malicious JPEG2000 data that triggers the decoder flaw; when the file is opened or imported by an application using the vulnerable library, the overflow occurs and attacker-controlled code runs in the context of the processing application.
How to fix it
Upgrade the Grassroot DICOM library to the latest patched release that corrects the JPEG2000Codec decoding logic. Where upgrades are delayed, isolate DICOM processing to trusted sources only and apply strict file-type validation before decoding.
How to confirm the fix worked
Reprocess a corpus of known-good and previously crashing DICOM samples under the updated library, confirm absence of crashes or memory errors with address sanitizer tooling, and verify vendor release notes reference resolution of the JPEG2000 out-of-bounds write.
Typical attack path
- Craft a specially malformed DICOM file containing malicious JPEG2000 streams
- Deliver the file to a target via email, file share, or network transfer
- Induce the victim application or automated workflow to process the DICOM file
- Trigger the heap overflow during DecodeByStreamsCommon execution
- Leverage memory corruption to achieve code execution or denial of service
How to detect it
Review application and system logs for crashes or errors during DICOM import operations, monitor for unexpected child processes spawned by DICOM viewers, and inspect memory dumps from decoder failures for signs of overflow patterns.
What your security team should do
- Prioritize patching all instances of the affected DICOM library within the next maintenance window
- Block or sandbox processing of DICOM files from untrusted external sources
- Add runtime memory protections such as ASLR and heap canaries where feasible
- Subscribe to vendor and NVD alerts for subsequent Grassroot DICOM updates
The record
An out-of-bounds write vulnerability exists in the JPEG2000Codec::DecodeByStreamsCommon functionality of Mathieu Malaterre Grassroot DICOM 3.0.23. A specially crafted DICOM file can lead to a heap buffer overflow. An attacker can provide a malicious file to trigger this vulnerability.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | gdcm | 0 | No fix |
| Debian:12 | gdcm | 0 | No fix |
| Debian:13 | gdcm | 0 | 3.0.24-1 |
| Debian:14 | gdcm | 0 | 3.0.24-1 |
| SUSE:Package Hub 15 SP5 | gdcm | 0 | 3.0.24-bp155.2.4.1 |
| SUSE:Package Hub 15 SP6 | gdcm | 0 | 3.0.24-bp156.2.4.1 |
| Ubuntu:16.04:LTS | gdcm | 0 | No fix |
| Ubuntu:18.04:LTS | gdcm | 0 | No fix |
| Ubuntu:20.04:LTS | gdcm | 0 | No fix |
| Ubuntu:22.04:LTS | gdcm | 0 | No fix |
| Ubuntu:24.04:LTS | gdcm | 0 | No fix |
| Ubuntu:24.10 | gdcm | 0 | 3.0.24-3build1 |
| Ubuntu:Pro:14.04:LTS | gdcm | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | gdcm | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | gdcm | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | gdcm | 0 | No fix |
| openSUSE:Leap 15.5 | gdcm | 0 | 3.0.24-bp155.2.4.1 |
| openSUSE:Leap 15.6 | gdcm | 0 | 3.0.24-bp156.2.4.1 |
| openSUSE:Leap 16.0 | gdcm | 0 | 3.0.24-bp160.2.1 |
| openSUSE:Leap 16.0 | orthanc | 0 | 1.12.10-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-authorization | 0 | 0.10.3-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-dicomweb | 0 | 1.22-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-gdcm | 0 | 1.8-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-indexer | 0 | 1.0-bp160.2.1 |
| openSUSE:Leap 16.0 | orthanc-mysql | 0 | 5.2-bp160.2.1 |
| openSUSE:Leap 16.0 | orthanc-neuro | 0 | 1.1-bp160.2.1 |
| openSUSE:Leap 16.0 | orthanc-postgresql | 0 | 10.0-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-python | 0 | 7.0-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-stl | 0 | 1.2-bp160.2.1 |
| openSUSE:Leap 16.0 | orthanc-tcia | 0 | 1.3-bp160.1.1 |
| openSUSE:Leap 16.0 | orthanc-wsi | 0 | 3.3-bp160.1.1 |
| openSUSE:Leap 16.0 | python-pyorthanc | 0 | 1.22.1-bp160.1.1 |
| openSUSE:Tumbleweed | orthanc-gdcm | 0 | 1.7-1.1 |
Related vulnerabilities
- CVE-2024-22391 A heap-based buffer overflow vulnerability exists in the LookupTable::SetLUT… Also affects gdcm
- CVE-2024-25569 An out-of-bounds read vulnerability exists in the RAWCodec::DecodeBytes functionality of… Also affects gdcm
- CVE-2015-8396 Integer overflow in the ImageRegionReader::ReadIntoBuffer function in… Also affects gdcm
- CVE-2009-3560 The big2_toUtf8 function in lib/xmltok.c in libexpat in Expat 2.0.1, as used in the… Also affects gdcm
- CVE-2009-3720 The updatePosition function in lib/xmltok_impl.c in libexpat in Expat 2.0.1, as used in… Also affects gdcm
- CVE-2024-50602 An issue was discovered in libexpat before 2.6.4. Also affects gdcm
- CVE-2024-45491 An issue was discovered in libexpat before 2.6.3. Also affects gdcm
- CVE-2024-45492 An issue was discovered in libexpat before 2.6.3. Also affects gdcm