关键信息总结 漏洞概述 漏洞类型: 分段错误/缓冲区溢出读取 受影响函数: 源文件: 行号: 84:31 信号: SIGABRT (6) 内存访问: 在地址0xfffffffffffffff0处读取 漏洞机制和根本原因 根本原因: 由于在libopts库的配置文件处理逻辑中输入验证和内存边界检查不当导致分段错误漏洞。 发生条件: 1. 参数指定一个格式错误的配置文件。 2. 函数初始化选项文件处理。 3. 控制流转到 进行文件操作。 4. 函数尝试处理文件。 5. 函数使用 执行字符串搜索操作。 6. 底层 实现遇到无效内存地址(0xfffffffffffffff0)。 地址Sanitizer报告 报告显示了详细的堆栈跟踪,指示在 的第84行发生READ访问异常。 概念证明 提供了一个Google Drive链接用于下载POC。 再现步骤 1. 使用AddressSanitizer编译tcpreplay。 2. 执行 。 3. 程序将因分段错误而崩溃。 受影响版本 tcpreplay版本 (最新版本在https://github.com/appneta/tcpreplay) 信用 Shuhao Li (Zhongguancun实验室) Xudong Cao (UCAS) Yuqing Zhang (UCAS, Zhongguancun实验室) 其他信息 该问题被标记为外部库中的外部漏洞,将在tcpreplay的4.0版本中弃用。