# iccDEV SIccCalcOp::Describe() 堆缓冲区溢出漏洞
## 概述
iccDEV 是一套用于处理 ICC(国际色彩联盟)色彩管理配置文件的库和工具。在版本 2.3.1.2 之前,IccProfLib/IccMpeCalc.cpp 中的 `SIccCalcOp::Describe()` 函数存在基于堆的缓冲区溢出漏洞。
## 影响版本
受影响版本为 2.3.1.2 之前的 iccDEV 库。
## 细节
漏洞位于 `IccProfLib/IccMpeCalc.cpp` 文件中的 `SIccCalcOp::Describe()` 函数,由于未正确校验输入数据,导致在处理 ICC 色彩配置文件时发生堆缓冲区溢出。
## 影响
处理恶意 ICC 配置文件的用户可能遭受堆缓冲区溢出攻击,可能导致任意代码执行或程序崩溃。该漏洞已修复于版本 2.3.1.2。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Fix: heap-buffer-overflow in SIccCalcOp::Describe() at IccProfLib/IccMpeCalc.cpp:1816 by ChrisCoxArt · Pull Request #476 · InternationalColorConsortium/iccDEV · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息
- **漏洞类型**: 堆缓冲区溢出 (Heap-Buffer-Overflow)
- **受影响文件**: `IccMpeCalc.cpp`
- **具体位置**: `IccProfLib/IccMpeCalc.cpp:1816`
- **相关Issue**: #475
- **Merge状态**: 已合并 (Merged)
### 审查和处理详情
- **Pull Request号**: #476
- **提交者**: xsscx
- **贡献者**: ChrisCoxArt
- **审查者**: xsscx
- **标签**: CVE Requested, Merged, Security, PR
### 提交和测试信息
- **提交Hash**: 9f3aac4
- **测试命令**:
```bash
git clone https://github.com/InternationalColorConsortium/iccDEV.git
cd iccDEV
git fetch origin pull/476/head:pr-476
git checkout pr-476
cd Build
```
### 其他
- **应对此漏洞创建了CVE**: GHSA-vr49-3vf8-7j5h
标题: heap-buffer-overflow in SIccCalcOp::Describe() at IccProfLib/IccMpeCalc.cpp:1816 · Issue #475 · InternationalColorConsortium/iccDEV -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键信息
- **漏洞类型**: 堆缓冲区溢出 (heap-buffer-overflow)
- **影响文件**: SIccCalcOp::Describe() at IccProfLib/IccMpeCalc.cpp:1816
- **报告人**: xsscx
- **状态**: 已关闭 (Closed)
- **问题编号**: #475
- **标签**: Bug, Security, Triaged
### 维护者重现步骤
- **Host**: Linux 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC
- **Source Tested**:
- Step 1: 下载特定的 ICC 文件
- Step 2: 使用 iccToXml 工具
### 预期输出
- 包含大量的调试信息和错误日志,指出在地址 0x5120000002e0 发生堆缓冲区溢出。
- 堆分配和堆栈回溯的详细信息。
### PoC 使用 Fil-C Toolchain
- 提供了一个用于测试和验证漏洞的具体测试案例。
### 关闭与修复
- 由 ChrisCoxArt 提交的修复提交已经解决了该问题。
标题: heap-buffer-overflow in SIccCalcOp::Describe() at IccProfLib/IccMpeCalc.cpp · Advisory · InternationalColorConsortium/iccDEV · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 漏洞关键信息
- **漏洞描述**
- 堆缓冲区溢出在 `SIccCalcOp::Describe()` 函数中,位于 `IccProfLib/IccMpeCalc.cpp` 文件。
- **影响**
- 此漏洞影响使用 iccDEV 库处理 ICC 颜色配置文件的用户。
- **修复**
- 已在 ICU 的修复记录中更新,相关修复记录为 (#476)。
- **变通方案**
- 未提供变通方案。
- **参考**
- 相关参考信息为 (#475)。
- **影响的版本**
- 受影响版本 < 2.3.1.2。
- **已修复版本**
- 已修复版本 2.3.1.2。
- **严重度**
- 严重度评分:8.8 / 10。
- **CVSS v3 基础指标**
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:需要
- 作用范围:不变
- 机密性影响:高
- 完整性影响:高
- 可用性影响:高
- **CVE ID**
- CVE-2026-22861。
- **弱点**
- CWE-20
- CWE-120
- CWE-130
- CWE-252
- **致谢**
- ChrisCoxArt 修复开发者
- XSSCX 报告者
标题: Fix: heap-buffer-overflow in SIccCalcOp::Describe() at IccProfLib/Icc… · InternationalColorConsortium/iccDEV@fa9a364 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息总结
- **漏洞类型**: 堆缓冲区溢出 (`heap-buffer-overflow`)
- **漏洞位置**: `SIccCalcOp::Describe()` 方法
- **文件**: `IccProfLib/IccMpeCalc.cpp`
- **修复提交**: `fa9a364`
- **修复说明**:
- 原始问题:使用 `nOps - i` 可能应该用 `nOps - i - 2` (TODO 注释)
- 修改:引入变量 `remaining`,计算剩余的操作数,并在其基础上进行 `icIntMin` 比较
- **修复人**: ChrisCoxArt
- **关联问题**: #476
- **代码变动**:
- 行 2998-2999 修改为:
```cpp
icUInt32Number remaining = nOps - i - 2;
```
- 行 3011-3012 修改为:
```cpp
remaining = nOps - i - 1;
```
暂无评论