DLLens 论文
现有方法在 counterpart 的选择上:选择不同的后端(CPU/GPU)、同一函数的不同实现方式、相似函数签名(tf.math.add 与 tf.add)。通常,这些在底层有共享的实现或内部及其相似甚至相同,因此无法通过差分测试来暴露 API 实现中的漏洞。DLLens 利用跨库 counterpart 或组合不同 counterpart 实现。
输入有效性:DocTer 通过基于规则的方法从 API 文档提取输入约束;TensorScope 分析部分源代码提取输入约束;
路径约束:ACETest 对 API 源代码的子集做静态分析,排除外部函数(如 std::max),可能无法提取到某些完整输入约束。
LLMs 在 DL 库 API 有丰富知识,理论上可以完成 API counterpart 识别和路径约束的提取:
- LLM 生成的 counterpart 在某些输入条件下无效,导致差分测试出现误报;
- LLM 生成的路径约束不完整。
DLLens 采取 GPT-4o-mini。

- 对于每个 API,DLLens 首先利用类 TitanFuzz 的 prompt 生成 N 个验证输入集,然后应用属性变异来枚举 f 的每个参数的不同值(具体而言,对于一个给定参数,枚举每个属性变异空间 [事先定义] 所有可能属性值来生成一组变异体;对于 float 等非连续参数,为其生成五个变异体;对于字符串或其他类型的参数,不进行变异),由此形成了验证输入集 X \boldsymbol{X} X 。
- 利用 X X X、API 签名,合成一个对应体 f ′ f' f′ ;
- 利用 ∣ f ( x ) − f ′ ( x ) ∣ < ϵ |f(x)-f^{'}(x)|<\epsilon ∣f(x)

最低0.47元/天 解锁文章
1072

被折叠的 条评论
为什么被折叠?



