# BYVoid OpenCC 极大匹配堆溢出漏洞
## 概述
BYVoid OpenCC 1.1.9 及之前版本中存在一个堆缓冲区溢出漏洞,位于 `src/MaxMatchSegmentation.cpp` 文件的 `opencc::MaxMatchSegmentation` 函数。
## 影响版本
OpenCC 1.1.9 及以下版本。
## 细节
漏洞源于 `opencc::MaxMatchSegmentation` 函数对输入数据处理不当,导致堆-based 缓冲区溢出。攻击者可利用该漏洞操纵内存,可能实现本地代码执行。
## 影响
攻击者可利用公开的漏洞利用代码在本地触发缓冲区溢出,可能导致程序崩溃或任意代码执行。漏洞利用已公开,需立即采取防护措施。官方建议应用补丁(提交哈希:345c9a50ab07018f1b4439776bad78a0d40778ec)进行修复。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Fix two out-of-bounds read issues when handling truncated UTF-8 input… · BYVoid/OpenCC@345c9a5 · GitHub -- 🔗来源链接
标签:patch
神龙速读:
### 关键信息总结
#### 1. 漏洞类型
- **堆越界读(CWE-125)**
#### 2. 漏洞原因
- 在处理截断或畸形的UTF-8输入时,存在以下问题:
- **MaxMatchSegmentation**:`NextCharLength()`返回的值可能大于剩余输入长度,导致计数器下溢,进而越界读取。
- **转换逻辑**:字典匹配中的长度处理可能导致读取越过输入缓冲区末尾。
#### 3. 解决方法
- **显式跟踪输入缓冲区末尾**
- **在每次迭代中重新计算剩余长度**
- **将匹配字符和键长度限制为剩余缓冲区大小**
- **防止越过空终止符读取**
#### 4. 安全影响
- 处理不可信输入时可能有安全风险
#### 5. 测试覆盖
- 增加了对截断UTF-8序列的测试,确保修复后的行为正确且无额外数据泄露。
标题: Fix two out-of-bounds read issues when handling truncated UTF-8 input by frankslin · Pull Request #1005 · BYVoid/OpenCC · GitHub -- 🔗来源链接
标签:issue-tracking
神龙速读:
## 关键漏洞信息
### 漏洞类型
- **CWE-125**: 两个独立的越界读取问题
### 漏洞描述
- **MaxMatchSegmentation**:
- `NextCharLength()` 返回的值可能大于剩余输入大小。
- 原始逻辑从 `size_t` 长度计数器中减去此值,可能导致下溢和后续的越界读取。
- **Conversion**:
- 类似的长度处理会允许读取超出输入缓冲区末尾的数据,在字典匹配过程中,可能会传播无意的字节到转换输出。
### 修复措施
- 显式跟踪输入缓冲区的末尾。
- 每次迭代重新计算剩余长度。
- 将匹配字符和键长度限制在剩余缓冲区大小内。
- 阻止在空终止符之后读取。
### 安全影响
- 当处理不受信任的输入时,这些问题可能具有安全影响,被分类为堆越界读取问题。
### 测试覆盖
- 为有效 UTF-8 输入保留现有行为,并为截断的 UTF-8 序列添加测试覆盖。
标题: [Bug] Heap-buffer-overflow in opencc::MaxMatchSegmentation::Segment · Issue #997 · BYVoid/OpenCC -- 🔗来源链接
标签:issue-tracking
神龙速读:
### 关键漏洞信息
- **漏洞类型**: 堆缓冲区溢出 (Heap Buffer Overflow) 读取类型
- **目标**: OpenCC
- **崩溃类型**: 堆缓冲区溢出,尝试读取1字节超过分配的字符串缓冲区
- **源文件**: `src/MaxMatchSegmentation.cpp`
- **函数**: `openccc::MaxMatchSegmentation::Segment`
- **线号**: 34 (列41)
- **根因分析**: ASAN报告指出,在19字节分配区域之后0字节处发生大小为1的读取。`MaxMatchSegmentation::Segment`函数在处理输入字符串时未能正确检查边界条件,导致访问越界。
- **环境**:
- 操作系统: Linux x86_64
- 编译器: Clang
- 构建配置: 以启用ASan的发布模式
- **修复**: 提交`b4268b3`修复了`MaxMatchSegmentation::Segment`中的堆缓冲区溢出。
标题: 1222/repro at main · oneafter/1222 · GitHub -- 🔗来源链接
标签:exploit
神龙速读:
# 关键信息
## 仓库信息
- **仓库名称**: oneafter/1222
- **仓库状态**: Public
## 文件信息
- **文件路径**: `1222/repro`
- **最近提交信息**:
- 提交者: oneafter
- 提交信息: Add files via upload
- 提交哈希: 2c48d63
- 提交时间: last month
## 文件内容
- `harness.cpp` 文件存在
- `repro` 目录下内容:
- 第1行: 测试转换
- 第2行: 未知内容 (空白或特殊字符)
## 其他信息
- 无Fork记录
- 无Star记录
- 无Issues和Pull requests记录
```
从截图中获取到的关键信息主要集中在仓库的基本信息、文件及其内容、以及最近的提交记录。文件内容表明可能正在进行某种测试或转换的代码试验,但由于内容仅包含“测试转换”及一个空白行,具体的漏洞细节并未直接显示。需要进一步分析代码内容和上下文来确定是否存在漏洞。
标题: Login required -- 🔗来源链接
标签:signaturepermissions-required
神龙速读:
- **CVE**: CVE-2025-15536
- **Issue ID**: 997
- **Title**: BYVoid OpenCC up to 1.1.9 MaxMatchSegmentation.cpp MaxMatchSegmentation heap-based overflow
- **Reference IDs**:
- VDB-341708
- CVE-2025-15536
- Issue 997
- **Access Requirements**: Login required for full details
- **Additional Info**: Exploit pricing information available underground
标题: Submit #733347: BYVoid OpenCC ver.1.1.9 and master-branch Heap-based Buffer Overflow -- 🔗来源链接
标签:third-party-advisory
神龙速读:
```md
## 漏洞关键信息
### 漏洞标题
- **BYVoid OpenCC ver.1.1.9 and master-branch Heap-based Buffer Overflow**
### 漏洞描述
- **类型**:Heap Buffer Overflow (Read)
- **症状**:应用程序在处理 specially crafted string 时崩溃,堆溢出错误。
- **位置**:openc::MaxMatchSegmentation::Segment 函数中,尝试读取分配的字符串缓冲区之外 1 字节。
### 环境
- **操作系统**:Linux x86_64
- **编译器**:Clang
- **配置**:Release 模式,启用 ASan
### 漏洞详情
- **受影响的组件**:OpenCC 的 openc::MaxMatchSegmentation::Segment 函数
- **触发原因**:处理特定长度(19 字节)的分配区域后紧接着读取 1 字节
- **堆栈调用追踪**:
- SimpleConverter::Convert -> MaxMatchSegmentation::Segment
###复现步骤
1. 使用 ASan 编译 OpenCC 并启用 Release 优化。
2. 编译 OpenCC 框架并启用 AddressSanitizer。
3. 运行崩溃文件 ,触发 AddressSanitizer 报告的 heap-buffer-overflow。
### 修复
尚未提供。
```
暂无评论