arXivDaily arXiv每日学术速递 周一至周五更新
北美退伍军人节(Veterans Day),12 日无更新
arXiv 1807.07490cs.SEcs.AIcs.LG
收藏

FuzzerGym:一个用于模糊学习的竞争框架

FuzzerGym: A Competitive Framework for Fuzzing and Learning

Carnegie Mellon University(卡内基梅隆大学);Georgia Institute of Technology(佐治亚理工学院);Twentieth Century Fox(二十世纪福克斯公司);Starfleet Academy(星际舰队学院);Tyrell Inc.(泰瑞尔公司)

William Drozd, Michael D. Wagner

摘要:

Fuzzing是一种常用的技术,旨在通过自动制作程序输入来测试软件。目前,最成功的模糊算法强调简单,低开销的策略,在执行过程中有效地监视程序状态的能力。通过编译时插装,这些方法可以访问程序状态的许多方面,包括覆盖率、数据流以及异构故障检测和分类。然而,现有的方法在生成测试输入时利用盲随机变异策略。我们提出了一种不同的方法,使用这种状态信息来优化变异算子,使用强化学习(RL)。通过将OpenAI Gym与libFuzzer集成,我们能够同时利用强化学习和模糊化的进步,在多个不同的基准测试中实现更深入的覆盖。我们的技术将LLVM算法提供的丰富、高效的程序监控器与深度神经网络连接起来,直接从输入数据中学习突变选择策略。我们开发的跨语言异步架构使我们能够将任何OpenAI Gym兼容的深度强化学习算法应用于任何模糊问题,并且速度最小。

英文摘要:

Fuzzing is a commonly used technique designed to test software by automatically crafting program inputs. Currently, the most successful fuzzing algorithms emphasize simple, low-overhead strategies with the ability to efficiently monitor program state during execution. Through compile-time instrumentation, these approaches have access to numerous aspects of program state including coverage, data flow, and heterogeneous fault detection and classification. However, existing approaches utilize blind random mutation strategies when generating test inputs. We present a different approach that uses this state information to optimize mutation operators using reinforcement learning (RL). By integrating OpenAI Gym with libFuzzer we are able to simultaneously leverage advancements in reinforcement learning as well as fuzzing to achieve deeper coverage across several varied benchmarks. Our technique connects the rich, efficient program monitors provided by LLVM Santizers with a deep neural net to learn mutation selection strategies directly from the input data. The cross-language, asynchronous architecture we developed enables us to apply any OpenAI Gym compatible deep reinforcement learning algorithm to any fuzzing problem with minimal slowdown.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑