Security Vulnerability Report
中文
CVE-2026-21677 CVSS 8.8 HIGH

CVE-2026-21677

Published: 2026-01-06 04:15:54
Last Modified: 2026-01-12 20:40:01

Description

iccDEV provides a set of libraries and tools for working with ICC color management profiles. Versions 2.3.1 and below have Undefined Behavior in its CIccCLUT::Init function which initializes and sets the size of a CLUT. This issue is fixed in version 2.3.1.1.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/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.1
iccDEV <= 2.3.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <iostream> #include <fstream> #include <vector> // Simulate CIccCLUT::Init vulnerability trigger // This PoC demonstrates the undefined behavior in CLUT initialization struct IccProfileHeader { char signature[4]; // 'acsp' for ASC Color Profile uint32_t size; uint32_t cmmType; uint32_t version; uint32_t profileClass; uint32_t colorSpace; uint32_t pcs; }; struct CLUTData { uint8_t gridPoints[16]; // Input grid points for each channel uint32_t numEntries; // Number of CLUT entries std::vector<float> data; // CLUT data }; bool trigger_vulnerability(const char* filename) { std::ifstream file(filename, std::ios::binary); if (!file.is_open()) { std::cerr << "Failed to open file: " << filename << std::endl; return false; } // Read profile header IccProfileHeader header; file.read(reinterpret_cast<char*>(&header), sizeof(header)); // Read CLUT data CLUTData clut; file.read(reinterpret_cast<char*>(clut.gridPoints), 16); file.read(reinterpret_cast<char*>(&clut.numEntries), sizeof(uint32_t)); // Vulnerability trigger: Missing validation of gridPoints and numEntries // This can lead to integer overflow or buffer overflow uint32_t calculatedSize = 1; for (int i = 0; i < 16; i++) { // Grid points not validated (should be 2-16) calculatedSize *= clut.gridPoints[i]; // Potential overflow } // numEntries not properly validated against calculatedSize // Can cause buffer overflow when reading clut.data clut.data.resize(clut.numEntries); file.read(reinterpret_cast<char*>(clut.data.data()), clut.numEntries * sizeof(float)); return true; } int main(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " <malicious_icc_file>" << std::endl; return 1; } trigger_vulnerability(argv[1]); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21677", "sourceIdentifier": "[email protected]", "published": "2026-01-06T04:15:54.397", "lastModified": "2026-01-12T20:40:01.490", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "iccDEV provides a set of libraries and tools for working with ICC color management profiles. Versions 2.3.1 and below have Undefined Behavior in its CIccCLUT::Init function which initializes and sets the size of a CLUT. This issue is fixed in version 2.3.1.1."}, {"lang": "es", "value": "iccDEV proporciona un conjunto de bibliotecas y herramientas para trabajar con perfiles de gestión de color ICC. Las versiones 2.3.1 e inferiores tienen Comportamiento Indefinido en su función CIccCLUT::Init, que inicializa y establece el tamaño de una CLUT. Este problema está corregido en la versión 2.3.1.1."}], "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:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "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/commit/201125fbda22c8e4ea95800a6b427093fa4b8a22", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/issues/181", "source": "[email protected]", "tags": ["Issue Tracking", "Exploit", "Vendor Advisory"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/security/advisories/GHSA-95w5-jvqf-3994", "source": "[email protected]", "tags": ["Patch", "Vendor Advisory"]}, {"url": "https://github.com/InternationalColorConsortium/iccDEV/issues/181", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Issue Tracking", "Exploit", "Vendor Advisory"]}]}}