Skip to main content
QUICK REVIEW

[论文解读] SkipFuzz: Active Learning-based Input Selection for Fuzzing Deep Learning Libraries

Hong Jin Kang, Pattarakrit Rattanukul|arXiv (Cornell University)|Dec 8, 2022
Adversarial Robustness in Machine Learning被引用 4
一句话总结

SkipFuzz 是一种针对深度学习库的新型模糊测试方法,通过主动学习推断输入约束,无需依赖文档或种子输入。通过与测试执行器交互式查询,它生成语义上有效且非冗余的输入,显著提升了崩溃发现能力——共报告 43 个崩溃,其中 28 个被确认,13 个被分配了唯一的 CVE 编号。

ABSTRACT

Many modern software systems are enabled by deep learning libraries such as TensorFlow and PyTorch. As deep learning is now prevalent, the security of deep learning libraries is a key concern. Fuzzing deep learning libraries presents two challenges. Firstly, to reach the functionality of the libraries, fuzzers have to use inputs from the valid input domain of each API function, which may be unknown. Secondly, many inputs are redundant. Randomly sampled invalid inputs are likely not to trigger new behaviors. While existing approaches partially address the first challenge, they overlook the second challenge. We propose SkipFuzz, an approach for fuzzing deep learning libraries. To generate valid inputs, SkipFuzz learns the input constraints of each API function using active learning. By using information gained during fuzzing, SkipFuzz infers a model of the input constraints, and, thus, generate valid inputs. SkipFuzz comprises an active learner which queries a test executor to obtain feedback for inference. After constructing hypotheses, the active learner poses queries and refines the hypotheses using the feedback from the test executor, which indicates if the library accepts or rejects an input, i.e., if it satisfies the input constraints or not. Inputs from different categories are used to invoke the library to check if a set of inputs satisfies a function's input constraints. Inputs in one category are distinguished from other categories by possible input constraints they would satisfy, e.g. they are tensors of a certain shape. As such, SkipFuzz is able to refine its hypothesis by eliminating possible candidates of the input constraints. This active learning-based approach addresses the challenge of redundant inputs. Using SkipFuzz, we have found and reported 43 crashes. 28 of them have been confirmed, with 13 unique CVEs assigned.

研究动机与目标

  • 解决在输入约束未知的情况下,为模糊测试深度学习库生成语义上有效输入的挑战。
  • 通过选择能触发新行为而非重复已知结果的输入,减少模糊测试中的输入冗余。
  • 消除对 API 文档或手动收集的种子输入的依赖,以推断输入约束。
  • 通过有针对性的、约束感知的模糊测试,提升 TensorFlow 和 PyTorch 等深度学习库中的崩溃发现能力。
  • 开发一种可扩展的、动态的方法,在模糊测试过程中实时学习输入约束。

提出的方法

  • SkipFuzz 采用主动学习,通过向测试执行器(充当预言机)查询,迭代式地推断 API 函数的输入约束。
  • 主动学习器将输入查询按潜在约束类别(例如张量形状或类型)进行分类,以测试其有效性。
  • 来自测试执行器的反馈——指示输入是否被接受或拒绝——用于精炼真实输入约束的假设。
  • 基于输入提供新信息的潜力进行选择,以最小化冗余并最大化行为多样性。
  • 系统在模糊测试过程中动态构建并执行测试用例,以验证假设并持续优化输入约束模型。
  • 避免使用随机变异或基于种子的生成方式,转而专注于基于约束信息、最大化信息量的输入。

实验结果

研究问题

  • RQ1在不依赖文档的情况下,主动学习能否有效推断深度学习库 API 的输入约束?
  • RQ2约束推断能否在模糊测试中减少输入冗余并提升对新行为的发现能力?
  • RQ3基于约束的输入选择是否能带来比随机或变异模糊测试更高的崩溃重现率?
  • RQ4SkipFuzz 能否发现广泛使用的深度学习库中此前未知的漏洞?
  • RQ5在崩溃发现能力和 CVE 报告方面,SkipFuzz 的性能与 DocTer 和 FreeFuzz 等现有方法相比如何?

主要发现

  • SkipFuzz 在深度学习库中发现了 43 个崩溃并已报告,其中 28 个被维护者确认。
  • 在被确认的漏洞中,有 13 个分配了唯一的 CVE 编号,证明其发现了此前未知且严重的安全缺陷。
  • 该方法在生成崩溃输入方面优于先前方法,尤其通过基于约束的输入选择显著减少了冗余。
  • SkipFuzz 在无需 API 文档或预先存在的种子输入的情况下成功推断出输入约束,证明其在真实库模糊测试中的有效性。
  • 主动学习机制实现了高效的假设精炼,查询设计旨在最大化关于输入约束的信息增益。
  • 该工具展示了可扩展性和实用性,其源代码已公开,可供复现和扩展。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。