分享自:

大型语言模型作为零样本模糊测试工具:通过大型语言模型对深度学习库进行模糊测试

期刊:ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2023)DOI:10.1145/nnnnnnn.nnnnnnn

这篇文档属于类型a,是一篇关于利用大型语言模型(Large Language Models, LLMs)进行深度学习库模糊测试(fuzzing)的原创性研究。以下是详细的学术报告:

主要作者及机构

本研究由Yinlin Deng(伊利诺伊大学厄巴纳-香槟分校)、Chunqiu Steven Xia(伊利诺伊大学厄巴纳-香槟分校)、Haoran Peng(中国科学技术大学)、Chenyuan Yang(伊利诺伊大学厄巴纳-香槟分校)和Lingming Zhang(伊利诺伊大学厄巴纳-香槟分校)合作完成,发表于2023年ACM SIGSOFT国际软件测试与分析研讨会(ISSTA 2023)。

学术背景

研究领域:本研究属于软件工程与深度学习交叉领域,聚焦于深度学习库的自动化测试。
研究动机:深度学习库(如TensorFlow和PyTorch)是构建深度学习系统的核心组件,但其复杂性导致传统模糊测试技术难以生成满足语法、语义及张量计算约束的有效输入程序。现有方法(如API级和模型级模糊测试)存在多样性不足、无法生成复杂API序列等问题。
研究目标:提出TitanFuzz,首次利用LLMs(如Codex和InCoder)直接生成和变异深度学习库的输入程序,以覆盖更多API并检测潜在错误。

研究流程

  1. 初始种子生成

    • 方法:使用生成式LLM(Codex)通过分步提示(step-by-step prompt)生成初始种子程序。提示包括目标API签名、库导入和输入生成步骤。
    • 样本量:每个API生成25个种子程序,通过温度参数(temperature=0.4)平衡多样性与有效性。
    • 创新点:首次将提示工程(prompt engineering)应用于模糊测试,显著提升生成程序的质量。
  2. 进化式模糊测试

    • 种子选择:基于适应度函数(fitness function)选择高评分种子,优先考虑数据流深度(depth of dataflow graph)和唯一API调用数量。
    • 变异操作:设计四类变异算子(argument-replacement、prefix、suffix、method),通过多臂老虎机算法(Multi-Armed Bandit, MAB)动态选择最优算子。
    • 代码填充:使用填充式LLM(InCoder)替换掩码标记(),生成新程序。InCoder基于双向上下文填充代码,确保语义有效性。
    • 验证与筛选:执行程序并过滤运行时错误,保留唯一有效程序加入种子库。
  3. 错误检测

    • 测试预言(oracle):采用差分测试(differential testing),比较CPU与GPU的执行结果,检测计算错误(wrong-computation)和崩溃(crash)。
    • 错误类型:包括数值不一致(如NaN处理差异)、安全漏洞(如越界读取)和同步错误(如API序列触发的GPU行为异常)。

主要结果

  1. API覆盖率

    • TitanFuzz在TensorFlow和PyTorch上分别覆盖2215和1329个API,较最优基线(DeepRel)提升91.11%和24.09%。
    • 数据支持:表1显示,传统模型级模糊测试(如Muffin)仅覆盖79个TensorFlow API,而TitanFuzz覆盖率达66.8%。
  2. 代码覆盖率

    • TitanFuzz在PyTorch和TensorFlow上的代码行覆盖率分别为20.98%和39.97%,较DeepRel提升50.84%和30.38%。
    • 趋势分析:图7表明,TitanFuzz的覆盖率随测试时间持续增长,而传统方法在20秒后即饱和。
  3. 错误检测

    • 共检测到65个错误,其中41个被确认为未知错误(19个崩溃、22个计算错误)。
    • 典型案例
      • PyTorchtorch.histc在CPU与GPU上对NaN值的计数不一致(图9b)。
      • TensorFlowtf.raw_ops.ParallelDynamicStitch存在未处理的越界读取漏洞(图9c)。
    • 独特性:10个错误仅通过Codex生成的种子程序即可触发,无需变异。

结论与价值

  1. 科学价值

    • 首次证明LLMs可直接用于生成式和变异式模糊测试,无需领域特定规则或人工标注。
    • 提出基于MAB的变异算子选择策略和适应度函数,为复杂API序列测试提供通用框架。
  2. 应用价值

    • TitanFuzz可扩展至其他领域(如编译器、数据库系统),推动LLMs在软件测试中的普适应用。
    • 检测到的安全漏洞(如越界读取)为深度学习库的可靠性改进提供了关键依据。

研究亮点

  1. 方法创新

    • 结合生成式与填充式LLMs,突破传统模糊测试的输入生成限制。
    • 引入进化算法与静态分析,优化种子多样性。
  2. 结果突破

    • 在未微调LLMs的情况下,实现显著高于传统方法的覆盖率和错误检测能力。
    • 发现多个高优先级错误,部分已被开发者修复(如PyTorch的NaN处理问题)。

其他价值

  • 资源效率:Codex生成种子的时间成本较高(0.82秒/程序),但InCoder的变异阶段效率极佳(0.1秒/程序),平衡了生成质量与速度。
  • 可复现性:开源实现和详细实验设置(如温度参数、MAB初始化)为后续研究提供基准。

(注:文档中部分图表和算法细节因篇幅未完全展开,但核心方法与结果已涵盖。)

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com