Cooper 利用协同变异来测试脚本语言的绑定代码,以发现内存安全问题。协同变异同时修改脚本代码和相关的文档对象,以探索绑定代码的各种代码路径。为了支持协同变异,我们推断脚本代码与文档对象之间的关系,以指导二维变异。我们将工具 Cooper 应用于三款流行的商业软件:Adobe Acrobat、Foxit Reader 和 Microsoft Word。Cooper 检测到了 134 个此前未知的漏洞,这带来了 33 个 CVE 条目 和 22K 的漏洞赏金。Cooper 包含三个组件:
Cooper 的总体架构如下图所示。
更多详情,请参阅我们在第 29 届年度网络与分布式系统安全研讨会(NDSS 2022)上发表的论文。
pip install pywin32你需要准备一些 PDF(Word)样本,并将它们放在一个文件夹中,该文件夹将用作 sample_dir。
PDF(Word)样本的数量应在 10,000 到 20,000 之间。
我们在 DropBox 中准备了 200 个 PDF 样本,
并在 DropBox 中准备了 214 个 Word 样本。
你可以用这些小样本进行测试,但为了获得更好的结果,建议使用更多样本。
$ python PdfSolution.py/WordSolution.py <sample_dir> <data_dir> <output_dir> <generate_cnt>
<sample_dir>: the absolute path of raw pdf samples folder
<data_dir>: the absolute path for mid data folder
<output_dir>: the absolute path for folder storing generated samples
<generate_cnt>: the amount how many input Cooper will generate
Peng Xu [email protected]
Yanhao Wang [email protected]
Hong Hu [email protected]
Purui Su [email protected]
Cooper: Testing the Binding Code of Scripting Languages with Cooperative Mutation
@inproceedings{xu:cooper,
title = {{Cooper: Testing the Binding Code of Scripting Languages with Cooperative Mutation (To Appear)}},
author = {Peng Xu and Yanhao Wang and Hong Hu and Purui Su},
booktitle = {Proceedings of the 29th Annual Network and Distributed System Security Symposium (NDSS 2022)},
month = {apr},
year = {2022},
address = {San Diego, CA},
}