[Paper] SysPro:从 Bug 报告中复现系统级并发漏洞

发布: (2026年1月15日 GMT+8 00:40)
6 min read
原文: arXiv

Source: arXiv - 2601.09616v1

概述

本文介绍了 SysPro,这是一款能够自动将自然语言的 bug 报告转换为系统级并发错误的可复现测试用例的工具。通过提取相关的系统调用序列和所需的输入数据,SysPro 弥合了模糊的人类书写报告与开发者调试和修复这些难以复现问题所需的确定性测试框架之间的鸿沟。

关键贡献

  • 使用 NLP 技术从非结构化错误报告中自动提取系统调用名称
  • 源代码位置映射,将提取的调用链接到其出现的确切函数。
  • 输入生成流水线,结合信息检索、正则匹配和类别划分方法合成真实的输入。
  • 动态插桩框架,在执行期间强制已识别的系统调用交错,使非确定性错误变为确定性。
  • 实证评估,在精选的真实并发错误集上展示了高成功率(≈ 80 % 的错误复现),且开销适中。

方法论

  1. 报告解析 – SysPro 解析错误报告文本,使用关键字检测和词性标注相结合的方式识别候选系统调用名称(例如 openreadioctl)。
  2. 调用点定位 – 该工具在项目的源码树中搜索每个已识别调用的出现位置,利用静态分析来解析函数重载和间接调用。
  3. 输入合成
    • 信息检索:检索已有的测试输入或包含相同关键字的配置片段。
    • 正则匹配:从报告中提取具体的字面量(文件路径、标志、缓冲区大小)。
    • 类别划分:系统性枚举参数组合,以覆盖常导致并发错误的边界值。
  4. 交错强制 – SysPro 在运行时对目标二进制进行插桩(通过 ptrace/LD_PRELOAD 钩子),在每个已识别的系统调用后暂停。调度线程随后强制执行错误描述中(或推断出的)精确调用顺序。
  5. 复现循环 – 生成的输入和强制的交错被反复执行,直至错误显现(例如崩溃、断言失败或状态错误)。

所有步骤均自动化,只需提供错误报告和源码仓库即可。

结果与发现

MetricOutcome
Bug reproduction rate78 % 的 45 个真实系统级并发 bug 成功复现。
Localization accuracy92 % 的提取系统调用名称正确映射到源代码位置。
Input generation time每个 bug 平均 3.2 秒(包括解析、检索和合成)。
Runtime overhead由于插装导致的性能下降 ≤ 12 %,在调试会话中可接受。

研究还表明,大多数复现失败是由于缺少特定环境资源(例如设备节点),而不是提取或调度逻辑的不足。

实际意义

  • 更快的分流 – 开发者可以将新提交的缺陷报告输入 SysPro,获取可直接运行的测试用例,将“复现‑再调试”周期从数天缩短到数分钟。
  • 持续集成 – SysPro 可集成到 CI 流水线中,自动为报告的并发缺陷生成回归测试。
  • 改进的缺陷跟踪 – 为每个报告附上可复现的测试用例,团队能够更清晰地了解缺陷严重程度,并更客观地确定修复优先级。
  • 安全性测试 – 系统级并发缺陷常导致特权提升或数据泄露;SysPro 使安全团队能够可靠地复现并评估此类漏洞的影响。

限制与未来工作

  • 环境依赖 – SysPro 假设目标系统的硬件和内核配置与原始 bug 相匹配;不匹配可能导致无法复现。
  • 报告质量差异 – 极其简短或含糊的报告可能没有足够的线索进行准确的调用点提取。
  • 对大型代码库的可扩展性 – 虽然当前原型在中等规模项目上表现良好,但对庞大仓库的索引和搜索可能成为瓶颈。

未来方向包括将该方法扩展到分布式系统(跨进程交错)的处理,加入机器学习模型以更好地推断缺失的输入参数,以及构建一个云服务,使开发者无需自行搭建环境。

作者

  • Tarannum Shaila Zaman
  • Zhihui Yan
  • Chen Wang
  • Chadni Islam
  • Jiangfan Shi
  • Tingting Yu

论文信息

  • arXiv ID: 2601.09616v1
  • 分类: cs.SE
  • 发布日期: 2026年1月14日
  • PDF: 下载 PDF
Back to Blog

相关文章

阅读更多 »