Make out like a (Multi-Armed) Bandit: Improving the Odds of Fuzzer Seed Scheduling with T-Scheduler (2312.04749v1)
Abstract: Fuzzing is a highly-scalable software testing technique that uncovers bugs in a target program by executing it with mutated inputs. Over the life of a fuzzing campaign, the fuzzer accumulates inputs inducing new and interesting target behaviors, drawing from these inputs for further mutation. This rapidly results in a large number of inputs to select from, making it challenging to quickly and accurately select the "most promising" input for mutation. Reinforcement learning (RL) provides a natural solution to this "seed scheduling" problem: the fuzzer dynamically adapts its selection strategy by learning from past results. However, existing RL approaches are (a) computationally expensive (reducing fuzzer throughput) and/or (b) require hyperparameter tuning (reducing generality across targets and input types). To this end, we propose T-Scheduler, a seed scheduler built on multi-armed bandit theory that automatically adapts to the target without any hyperparameter tuning. We evaluate T-Scheduler over 35 CPU-yr of fuzzing, comparing it to 11 state-of-the-art schedulers. Our results show that T-Scheduler improves on these 11 schedulers on both bug-finding and coverage-expansion abilities.
- Adobe. 1992. TIFF, Revision 6.0. https://www.loc.gov/preservation/digital/formats/fdd/fdd000022.shtml
- Shipra Agrawal and Navin Goyal. 2017. Near-Optimal Regret Bounds for Thompson Sampling. Jorunal of the ACM 64, 5, Article 30 (2017), 24 pages. https://doi.org/10.1145/3088510
- Andrea Arcuri and Lionel Briand. 2011. A Practical Guide for Using Statistical Tests to Assess Randomized Algorithms in Software Engineering. In International Conference on Software Engineering (ICSE). ACM, 1–10. https://doi.org/10.1145/1985793.1985795
- REDQUEEN: Fuzzing with Input-to-State Correspondence. In Network and Distributed System Security (NDSS). The Internet Society, 15 pages. https://doi.org/10.14722/ndss.2019.23371
- Boosting Fuzzer Efficiency: An Information Theoretic Perspective. In European Software Engineering Conference and Foundations of Software Engineering (ESEC/FSE). ACM, 678–689. https://doi.org/10.1145/3368089.3409748
- Directed Greybox Fuzzing. In Computer and Communications Security (CCS). ACM, 2329–2344. https://doi.org/10.1145/3133956.3134020
- Coverage-Based Greybox Fuzzing as Markov Chain. In Computer and Communications Security (CCS). ACM, 1032–1043. https://doi.org/10.1145/2976749.2978428
- On the Reliability of Coverage-Based Fuzzer Benchmarking. In International Conference on Software Engineering (ICSE). ACM, 1621–1633. https://doi.org/10.1145/3510003.3510230
- Deep Reinforcement Fuzzing. In Security and Privacy Workshops (SPW). IEEE, 116–122. https://doi.org/10.1109/SPW.2018.00026
- Oliver Chang. 2023. Taking the next step: OSS-Fuzz in 2023. https://security.googleblog.com/2023/02/taking-next-step-oss-fuzz-in-2023.html
- MEUZZ: Smart Seed Scheduling for Hybrid Fuzzing. In Research in Attacks, Intrusions and Defenses (RAID). USENIX, 77–92.
- Optimizing Seed Inputs in Fuzzing with Machine Learning. In International Conference on Software Engineering: Companion (ICSE). IEEE, 244–245. https://doi.org/10.1109/ICSE-Companion.2019.00096
- Clang Team. 2022. Source-based Code Coverage. https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
- Jacob Cohen. 1960. A Coefficient of Agreement for Nominal Scales. Educational and Psychological Measurement 20, 1 (1960), 37–46. https://doi.org/10.1177/001316446002000104
- AFL++: Combining Incremental Steps of Fuzzing Research. In Workshop on Offensive Technologies (WOOT). USENIX, 12 pages.
- Learn&Fuzz: Machine Learning for Input Fuzzing. In Automated Software Engineering (ASE). IEEE, 50–59.
- Magma: A Ground-Truth Fuzzing Benchmark. Measurement and Analysis of Computing Systems 4, 3, Article 49 (2020), 29 pages. https://doi.org/10.1145/3428334
- Seed Selection for Successful Fuzzing. In International Symposium on Software Testing and Analysis (ISSTA). ACM, 230–243. https://doi.org/10.1145/3460319.3464795
- Registered Report: datAFLow Towards a Data-Flow-Guided Fuzzer. In Fuzzing Workshop (FUZZING). The Internet Society, 11 pages. https://doi.org/10.14722/fuzzing.2022.23001
- Adaptive Grey-Box Fuzz-Testing with Thompson Sampling. In Artificial Intelligence and Security (AISec). ACM, 37–47. https://doi.org/10.1145/3270101.3270108
- Leo Katz. 1953. A new status index derived from sociometric analysis. Psychometrika (1953), 39–43. https://doi.org/10.1007/BF02289026
- Evaluating Fuzz Testing. In Computer and Communications Security (CCS). ACM, 2123–2138. https://doi.org/10.1145/3243734.3243804
- SLOPT: Bandit Optimization Framework for Mutation-Based Fuzzing. In Proceedings of the 38th Annual Computer Security Applications Conference (ACSAC). ACM, 519–533. https://doi.org/10.1145/3564625.3564659
- Tor Lattimore and Csaba Szepesvári. 2020. Bandit algorithms. Cambridge University Press.
- Deep Learning for Coverage-Guided Fuzzing: How Far are We? Transactions on Dependable and Secure Computing (2022), 1–13. https://doi.org/10.1109/TDSC.2022.3200525
- Nathan Mantel. 1966. Evaluation of survival data and two new rank order statistics arising in its consideration. Cancer Chemotherapy Reports 50, 3 (1966), 163–170.
- The Art, Science, and Engineering of Fuzzing: A Survey. Transactions on Software Engineering 47, 11 (2021), 2312–2331. https://doi.org/10.1109/TSE.2019.2946563
- FuzzBench: An Open Fuzzer Benchmarking Platform and Service. In European Software Engineering Conference and Foundations of Software Engineering (ESEC/FSE). ACM, 1393–1403. https://doi.org/10.1145/3468264.3473932
- NIST. 2019. CVE-2019-7663. https://nvd.nist.gov/vuln/detail/CVE-2019-7663
- Optimizing Seed Selection for Fuzzing. In USENIX Security (SEC). USENIX, 861–875.
- A Review of Machine Learning Applications in Fuzzing. arXiv Preprint abs/1906.11133 (2019), 12 pages. https://doi.org/10.48550/arXiv.1906.11133
- BanditFuzz: A Reinforcement-Learning Based Performance Fuzzer for SMT Solvers. In Verified Software: Theories, Tools, and Experiments (VSTTE). Springer-Verlag, 68–86. https://doi.org/10.1007/978-3-030-63618-0_5
- Evaluation and Analysis of the Performance of the EXP3 Algorithm in Stochastic Environments. In Proceedings of Machine Learning Research (PMLR, Vol. 24). PMLR, 103–116. http://proceedings.mlr.press/v24/seldin12a.html
- Kostya Serebryany. 2017. OSS-Fuzz - Google’s continuous fuzzing service for open source software. In USENIX Security (SEC). USENIX.
- Effective Seed Scheduling for Fuzzing with Graph Centrality Analysis. In Security and Privacy (S&P). IEEE, 2194–2211. https://doi.org/10.1109/SP46214.2022.9833761
- Richard S Sutton and Andrew G Barto. 2018. Reinforcement learning: An introduction. MIT press.
- William R Thompson. 1933. On the likelihood that one unknown probability exceeds another in view of the evidence of two samples. Biometrika 25, 3-4 (1933), 285–294.
- Jonas Benedict Wagner. 2017. Elastic Program Transformations: Automatically Optimizing the Reliability/Performance Trade-off in Systems Software. Ph. D. Dissertation. EPFL. https://doi.org/10.5075/epfl-thesis-7745
- SyzVegas: Beating Kernel Fuzzing Odds with Reinforcement Learning. In USENIX Security (SEC). USENIX, 2741–2758.
- Reinforcement Learning-based Hierarchical Seed Scheduling for Greybox Fuzzing. In Network and Distributed System Security Symposium (NDSS). The Internet Society, 17 pages. https://doi.org/10.14722/ndss.2021.24486
- Pengfei Wang and Xu Zhou. 2020. SoK: The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing. CoRR abs/2005.11907 (2020).
- A systematic review of fuzzing based on machine learning techniques. PLOS ONE 15, 8 (2020), 1–37. https://doi.org/10.1371/journal.pone.0237749
- Not All Coverage Measurements Are Equal: Fuzzing by Coverage Accounting for Input Prioritization. In Network and Distributed Systems Security (NDSS). The Internet Society, 17 pages. https://doi.org/10.14722/ndss.2020.24422
- Scheduling Black-Box Mutational Fuzzing. In Computer and Communications Security (CCS). ACM, 511–522. https://doi.org/10.1145/2508859.2516736
- Designing New Operating Primitives to Improve Fuzzing Performance. In Computer and Communications Security (CCS). ACM, 2313–2328. https://doi.org/10.1145/3133956.3134046
- EcoFuzz: Adaptive Energy-Saving Greybox Fuzzing as a Variant of the Adversarial Multi-Armed Bandit. In USENIX Security (SEC). USENIX, 2307–2324.
- Michał Zalewski. 2015. American Fuzzy Lop (AFL). http://lcamtuf.coredump.cx/afl/
- MobFuzz: Adaptive Multi-objective Optimization in Gray-box Fuzzing. In Network and Distributed Systems Security (NDSS). The Internet Society, 18 pages. https://doi.org/10.14722/ndss.2022.24314
- FishFuzz: Throwing Larger Nets to Catch Deeper Bugs. CoRR abs/2207.13393 (2022). https://doi.org/10.48550/arXiv.2207.13393
- FuzzGuard: Filtering out Unreachable Inputs in Directed Grey-box Fuzzing through Deep Learning. In USENIX Security (SEC). USENIX, 2255–2269.
- Simon Luo (6 papers)
- Adrian Herrera (5 papers)
- Paul Quirk (3 papers)
- Michael Chase (1 paper)
- Damith C. Ranasinghe (53 papers)
- Salil S. Kanhere (96 papers)