跳到主要内容
10.1145/3338906.3340456acm会议文章/章节视图摘要出版物页面fse公司会议记录会议集合
研究论文
最佳论文

FUDGE:大规模生成模糊驱动程序

出版:2019年8月12日出版历史

摘要

在谷歌,我们通过模糊化C和C++库发现了数万个安全性和健壮性错误。要模糊一个库,模糊器需要一个模糊驱动程序,它可以执行一些库代码来传递输入。不幸的是,编写模糊驱动程序仍然主要是手工操作,这是模糊化广泛应用的主要障碍。在本文中,我们通过引入Fudge系统来自动生成模糊驱动程序来解决这一主要障碍。Fudge根据现有客户端代码自动为库生成模糊驱动程序候选。我们已经使用Fudge为各种各样的库生成了数千个新驱动程序。每个生成的驱动程序都包含一个合成的C/C++程序和一个相应的构建脚本,并自动进行质量分析。开发人员已经将200多个生成的驱动程序集成到连续模糊服务中,并致力于解决报告的安全漏洞。此外,其中一些模糊驱动程序已经上传到开源项目中,并集成到OSS-fuzz模糊基础设施中。运行这些模糊驱动程序已经修复了150多个错误,包括消除了许多可利用的安全漏洞。

工具书类

  1. Mike Aizatsky、Kostya Serebryany、Oliver Chang、Abhishek Arya和Meredith Whittaker。2016.宣布OSS-Fuzz:开源软件的持续模糊。谷歌测试博客。https://testing.googleblog.com/2016/12/发布-oss-fuzz-continuous-fuzzing.html谷歌学者谷歌学者
  2. 谢·阿尔茨、迈克尔·D·恩斯特、亚当·基恩、卡洛斯·帕切科和杰夫·H·珀金斯。2006.大海捞针:为面向对象程序生成合法的测试输入。在M-TOOS中:基于模型的测试和面向对象系统第一次研讨会。俄勒冈州波特兰,美国,27-34。谷歌学者谷歌学者
  3. Abhishek Arya、Oliver Chang、Max Moroz、Martin Barbella、Jonathan Metzman和ClusterFuzz团队。2019.开源集群Fuzz。谷歌开源博客。https://opensource.googleblog.com/2019/02/open-sourceing-clusterfuzz。html格式谷歌学者谷歌学者
  4. 丹·布隆伯格,2001年至2018年。利普托尼卡。http://www.letonica.com。谷歌学者谷歌学者
  5. 雷蒙德·P·L·巴斯(Raymond P.L.Buse)和韦斯特利·魏默(Westley Weimer)。2012.合成API使用示例。第34届国际软件工程会议(ICSE’12)论文集。IEEE出版社,美国新泽西州皮斯卡塔韦,782-792。http://dl.acm.org/citation.cfm?编号:2337223.2337316谷歌学者谷歌学者数字图书馆数字图书馆
  6. Craig Chambers、Ashish Raniwala、Frances Perry、Stephen Adams、Robert R.Henry、Robert Bradshaw和Nathan Weizenbaum。2010年。FlumeJava:简单高效的数据并行管道。第31届ACM SIGPLAN编程语言设计与实现会议记录(PLDI’10)。ACM,美国纽约州纽约市,363–375。谷歌学者谷歌学者数字图书馆数字图书馆
  7. Intel Corporation、Willow Garage和Itseez。2019.开源计算机视觉库。https://opencv.org谷歌学者谷歌学者
  8. 杰弗里·迪恩(Jeffrey Dean)和桑杰·盖马沃特(Sanjay Ghemawat)。2004年,MapReduce:大型集群上的简化数据处理。第六届操作系统设计与制造研讨会论文集;实施-第6卷(OSDI’04)。USENIX协会,美国加利福尼亚州伯克利,10–10。http://dl.acm.org/citation.cfm?id=1251254.1251264谷歌学者谷歌学者数字图书馆数字图书馆
  9. S.Elbaum、H.N.Chin、M.B.Dwyer和M.Jorde。2009年,从系统测试用例中雕刻和回放差分单元测试用例。IEEE软件工程汇刊35,1(2009年1月),29-45。谷歌学者谷歌学者数字图书馆数字图书馆
  10. 克里斯·埃文斯(Chris Evans)、本·霍克斯(Ben Hawkes)、希瑟·阿德金斯(Heather Adkins)、马特·摩尔(Matt Moore)、米查尔·扎勒夫斯基(Michal Zalewski)和格哈德·埃舍尔贝克(Gerhard Esche。2015年,谷歌披露政策的反馈和数据驱动更新。https://googleprojectzero.blogspot.com/2015/02/feedback-and-datadriven-updates-to.html。谷歌学者谷歌学者
  11. 雅罗斯拉夫·福克斯和查尔斯·萨顿。2016.GitHub中的无参数概率API挖掘。2016年第24届ACM SIGSOFT软件工程基础国际研讨会论文集(FSE 2016)。美国纽约州纽约市ACM,254-265。谷歌学者谷歌学者数字图书馆数字图书馆
  12. 帕特里斯·戈德弗里德。2014.微观执行。第36届国际软件工程会议论文集(ICSE 2014)。美国纽约州纽约市ACM,539–549。谷歌学者谷歌学者数字图书馆数字图书馆
  13. Patrice Godefroid、Nils Klarlund和Koushik Sen.2005年。DART:定向自动随机测试。在2005年ACM SIGPLAN编程语言设计与实现会议论文集(PLDI'05)。谷歌学者谷歌学者数字图书馆数字图书馆
  14. Patrice Godefroid、Michael Y.Levin和David A.Molnar。2008年,自动白盒模糊测试。2008年2月10日至13日在美国加利福尼亚州圣地亚哥举行的NDSS 2008网络和分布式系统安全研讨会论文集。谷歌学者谷歌学者
  15. 谷歌公司2015。Bazel–一个快速、可扩展、多语言和可扩展的构建系统。http://www.bazel.io网站谷歌学者谷歌学者
  16. 2018年谷歌公司。OSS-模糊问题跟踪程序。https://bugs.chromium.org/p/oss-fuzz网站谷歌学者谷歌学者
  17. 2019年谷歌公司。第三方。谷歌的开源文档。https://opensource.google.com/docs/third第三方谷歌学者谷歌学者
  18. 亚历山大·坎普曼和安德烈亚斯·泽勒。2018年雕刻参数化单元测试。CoRR abs/1812.07932(2018)。arXiv公司:1812.07932http://arxiv.org/abs/1812。谷歌学者谷歌学者
  19. 07932谷歌学者谷歌学者
  20. 尼古拉·卡蒂尔齐斯(Nikolaos Katirtzis)、特米斯托克利斯·迪亚曼托普洛斯(Themistoklis Diamantopoulos)和查尔斯·萨顿(Charles Sutton)。2018.使用聚类技术总结软件API使用示例。在《软件工程的基本方法》一书中,亚历山德拉·鲁索和安迪·舒尔(编辑)。施普林格国际出版社,商会,189-206。谷歌学者谷歌学者
  21. Jinhan Kim、Sanghoon Lee、Seung-Won Hwang和Sunghun Kim。2013.用实例丰富文档:语料库挖掘方法。ACM事务处理。信息系统。31,1,第1条(2013年1月),27页。谷歌学者谷歌学者数字图书馆数字图书馆
  22. Chris Lattner和Vikram Adve。2004年,LLVM:终身程序分析和转换的编译框架。《代码生成和优化:反馈定向和运行时优化国际研讨会论文集》(CGO’04)。IEEE计算机协会,美国华盛顿特区,75–。http://dl.acm.org/citation.cfm?id=977395.977673谷歌学者谷歌学者数字图书馆数字图书馆
  23. 瓦伦丁·J·M·马内斯(Valentin J.M.Manès)、韩贤硕(HyungSeok Han)、韩宗宇(Chongwoo Han),桑基查(Sang Kil Cha)、曼努埃尔·伊格尔(Manuel Egele)、爱德华·J·施瓦茨(Edward J.Schwart。2018年,《模糊:艺术、科学与工程》,CoRR abs/1812.00140(2018)。arXiv:1812.00140号http://arxiv.org/abs/1812.00140谷歌学者谷歌学者
  24. J.E.Montandon、H.Borges、D.Felix和M.T.Valente。2013.用示例记录API:APIMiner平台的经验教训。2013年第20届逆向工程工作会议。401–408. 1109/WCRE.2013.6671315谷歌学者谷歌学者交叉引用交叉引用
  25. 劳拉·莫雷诺(Laura Moreno)、加布里埃尔·巴沃塔(Gabriele Bavota)、马西米利亚诺·迪·彭塔(Massimiliano Di Penta)、洛科·奥利维托(Rocco Oliveto)和安德里安·马库斯(Andrian Mar。2015.我如何使用这种方法?。第37届国际软件工程会议论文集-第1卷(ICSE’15)。IEEE出版社,美国新泽西州皮斯卡塔韦,880-890。http://dl.acm.org/citation.cfm?id=2818754。谷歌学者谷歌学者数字图书馆数字图书馆
  26. 2818860谷歌学者谷歌学者
  27. 食人魔开发团队。2019.OGRE-开源3D图形引擎。https://www.ogre3d.org/。谷歌学者谷歌学者
  28. 卡洛斯·帕切科(Carlos Pacheco)、舒文杜·拉希里(Shuvendu K.Lahiri)、迈克尔·D·恩斯特(Michael D.Ernst)和托马斯·鲍尔(Thomas Ball)。2007.反馈式随机测试生成。第29届国际软件工程会议(ICSE’07)论文集。IEEE计算机学会,美国华盛顿特区,75-84。谷歌学者谷歌学者数字图书馆数字图书馆
  29. Rachel Potvin和Josh Levenberg,2016年。为什么谷歌在一个存储库中存储了数十亿行代码。Commun公司。ACM 59,7(2016年6月),78–87。谷歌学者谷歌学者数字图书馆数字图书馆
  30. 马特·鲁瑟尔和奥利弗·张。2018年,OSS-Fuzz的新篇章。谷歌安全博客。https://security.googleblog.com/2018/11/a-new-chapter-for-ossfuzz.html谷歌学者谷歌学者
  31. Caitlin Sadowski、Kathryn T.Stolee和Sebastian Elbaum。2015.开发者如何搜索代码:案例研究。2015年第十届软件工程基础联席会议记录(ESEC/FSE 2015)。美国纽约州纽约市ACM,191-201年。谷歌学者谷歌学者数字图书馆数字图书馆
  32. M.A.Saied、O.Benomar、H.Abdeen和H.Sahraoui。2015.挖掘多级API使用模式。2015年IEEE第22届软件分析、进化和再工程国际会议(SANER)。2015年3月23日至32日谷歌学者谷歌学者
  33. 克斯特亚·塞雷布雷尼。2015.libFuzzer–一个用于覆盖引导模糊测试的库。https://llvm.org/docs/LibFuzzer.html#fuzz-目标。谷歌学者谷歌学者
  34. 克斯特亚·塞雷布雷尼。2015.使用LLVM的新libFuzzer对库进行简单引导模糊化。http://blog.llvm.org/2015/04/fuzz-all-clangs.html。谷歌学者谷歌学者
  35. Konstantin Serebryany、Derek Bruening、Alexander Potapenko和Dmitry Vyukov。2012.地址消毒剂:快速地址消毒器。在USENIX ATC 2012中。谷歌学者谷歌学者数字图书馆数字图书馆
  36. https://www.usenix.org/conference/usenixfederatedconferencesweek/地址消毒剂-快速地址卫生检查器谷歌学者谷歌学者
  37. 雷·史密斯。2007年,Tesseract OCR引擎概述。程序中。第九届国际文件分析和识别会议(ICDAR)。629–633.谷歌学者谷歌学者数字图书馆数字图书馆
  38. 1000基因组项目数据处理小组、亚历克·怀索克、鲍勃·汉德萨克、加博尔·马思、贡卡洛·阿贝卡斯、恒利、觉阮、尼尔斯·霍默、理查德·杜宾和蒂姆·芬内尔。2009.序列比对/映射格式和SAMtools。生物信息学25,16(2009年6月),2078–2079。谷歌学者谷歌学者数字图书馆数字图书馆
  39. 1093/生物信息学/btp352 arXiv:http://oup.prod.sis.lan/bioinformatics/articlepdf/25/16/2078/531810/btp352.pdf谷歌学者谷歌学者
  40. 罗伯特·斯威基。2015年,红福士。http://honggfuzz.com。谷歌学者谷歌学者
  41. 拉兹洛·塞克尔(Lászlós zekeres)。2017年,通过强化和测试缓解内存腐败。博士论文。石溪大学。谷歌学者谷歌学者
  42. 弗兰克·蒂普。1994年,节目切片技术综述。技术报告。阿姆斯特丹、荷兰、荷兰。谷歌学者谷歌学者数字图书馆数字图书馆
  43. J.Wang、Y.Dang、H.Zhang、K.Chen、T.Xie和D.Zhang。2013.从源代码中挖掘简洁且高覆盖率的API使用模式。2013年第十届挖掘软件库工作会议(MSR)。319–328.谷歌学者谷歌学者数字图书馆数字图书馆
  44. 马克·韦瑟(Mark Weiser)。1981.节目切片。第五届国际软件工程会议(ICSE’81)论文集。IEEE出版社,美国新泽西州皮斯卡塔韦,439–449。http://dl.acm.org/citation.cfm?id=800078.802557谷歌学者谷歌学者数字图书馆数字图书馆
  45. H.K.Wright、D.Jasper、M.Klimek、C.Carruth和Z.Wan。2013.使用ClangMR的大规模自动重构。2013年IEEE软件维护国际会议。548–551.谷歌学者谷歌学者数字图书馆数字图书馆
  46. MichałZalewski。2014年,美国Fuzzy Lop。http://lcamtuf.coredump.x/afl。谷歌学者谷歌学者
  47. Sai Zhang、David Saff、Yingyi Bu和Michael D.Ernst。2011.静态和动态组合自动测试生成。2011年软件测试与分析国际研讨会(ISSTA’11)论文集。ACM,美国纽约州纽约市,353–363。谷歌学者谷歌学者数字图书馆数字图书馆
  48. 郑武杰(Wujie Zheng)、张启润(Qirun Zhang)、刘振英(Michael Lyu)和谢涛(Tao Xie)。2010年,使用MUT感知序列建议的随机单元测试生成。IEEE/ACM自动化软件工程国际会议(ASE’10)论文集。ACM,美国纽约州纽约市,293-296。谷歌学者谷歌学者数字图书馆数字图书馆
  49. 郝忠、陶雪、陆章、简培和洪梅。2009年,MAPO:挖掘和推荐API使用模式。2009年第23届欧洲ECOOP会议记录——面向对象编程(热那亚)。斯普林格·弗拉格,柏林,海德堡,318-343。0_15谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. FUDGE:大规模生成模糊驱动程序

          建议

          评论

          登录选项

          检查您是否可以通过登录凭据或您的机构访问本文。

          登录

          完全访问权限

          PDF格式

          以PDF文件查看或下载。

          PDF格式

          电子阅读器

          使用eReader联机查看。

          电子阅读器