中文

SQUIRREL:利用语言有效性与覆盖反馈测试数据库管理系统

密码学与安全 2020-06-04 v1

摘要

模糊测试是一种日益流行的验证软件功能与发现安全漏洞的技术。然而,当前基于变异的模糊测试器无法有效测试数据库管理系统(DBMSs),后者严格检查输入的有效语法与语义。基于生成的测试能保证输入的语法正确性,但不利用任何如代码覆盖之类的反馈来引导路径探索。本文中我们开发了 Squirrel,一种新颖的模糊测试框架,兼顾语言有效性与覆盖反馈来测试 DBMSs。我们设计了一种中间表示(IR)以结构化和信息化的方式维护 SQL 查询。为生成语法正确的查询,我们在 IR 上执行基于类型的变异,包括语句插入、删除与替换。为缓解语义错误,我们分析每个 IR 以识别参数间的逻辑依赖,并生成满足这些依赖的查询。我们在四个流行 DBMSs 上评估了 Squirrel:SQLite、MySQL、PostgreSQL 和 MariaDB。Squirrel 在 SQLite 中发现 51 个 bug,在 MySQL 中发现 7 个,在 MariaDB 中发现 5 个。其中 52 个 bug 已被修复,并分配了 12 个 CVE。在我们的实验中,Squirrel 的语义正确性是当前最优模糊测试器的 2.4 至 243.9 倍,且比基于变异的工具多探索 2.0 至 10.9 倍的新边。这些结果表明 Squirrel 在发现数据库管理系统的内存错误方面是有效的。

关键词

引用

@article{arxiv.2006.02398,
  title  = {SQUIRREL: Testing Database Management Systems with Language Validity and Coverage Feedback},
  author = {Rui Zhong and Yongheng Chen and Hong Hu and Hangfan Zhang and Wenke Lee and Dinghao Wu},
  journal= {arXiv preprint arXiv:2006.02398},
  year   = {2020}
}

备注

In Proceedings of the 27th ACM Conference on Computer and Communications Security (CCS 2020)