Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
102 tokens/sec
GPT-4o
59 tokens/sec
Gemini 2.5 Pro Pro
43 tokens/sec
o3 Pro
6 tokens/sec
GPT-4.1 Pro
50 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

The Art, Science, and Engineering of Fuzzing: A Survey (1812.00140v4)

Published 1 Dec 2018 in cs.CR and cs.SE

Abstract: Among the many software vulnerability discovery techniques available today, fuzzing has remained highly popular due to its conceptual simplicity, its low barrier to deployment, and its vast amount of empirical evidence in discovering real-world software vulnerabilities. At a high level, fuzzing refers to a process of repeatedly running a program with generated inputs that may be syntactically or semantically malformed. While researchers and practitioners alike have invested a large and diverse effort towards improving fuzzing in recent years, this surge of work has also made it difficult to gain a comprehensive and coherent view of fuzzing. To help preserve and bring coherence to the vast literature of fuzzing, this paper presents a unified, general-purpose model of fuzzing together with a taxonomy of the current fuzzing literature. We methodically explore the design decisions at every stage of our model fuzzer by surveying the related literature and innovations in the art, science, and engineering that make modern-day fuzzers effective.

An Overview of "The Art, Science, and Engineering of Fuzzing: A Survey"

The paper "The Art, Science, and Engineering of Fuzzing: A Survey" provides a comprehensive examination of the fuzzing technique, a highly utilized method for discovering software vulnerabilities. Despite fuzzing's longevity and popularity, the proliferation of research and diverse methodologies in recent years necessitates this survey to organize and unify current understanding and innovations in this domain.

Summary of Main Contributions

The paper introduces a model to comprehensively describe and analyze fuzzing methodologies by dissecting the process into modular stages including pre-processing, scheduling, input generation, input evaluation, and configuration updating. Each of these stages is methodically explored, providing insights into the design choices and trade-offs inherent in modern fuzzing approaches.

Key Highlights:

  1. Model Fuzzer and Taxonomy:
    • The authors propose a generic "model fuzzer" that encapsulates the broad spectrum of fuzzing strategies and categorize fuzzing approaches using a taxonomy that organizes fuzzers into black-box, grey-box, and white-box categories based on the richness of semantics they observe during test execution.
  2. Stage-wise Exploration:
    • The survey explores each phase of the fuzzing process, providing a literature-backed examination of methodologies ranging from initial input seed selection to dynamic evolutionary algorithms driving fuzz iteration decisions.
    • Cutting-edge techniques in instrumentation, input generation via mutation or model-based generation, and sophisticated scheduling algorithms are discussed in depth.
  3. Algorithms and Techniques:
    • Featured are various state-of-the-art algorithms for input generation, ranging from simple bit-flipping to constraint-driven symbolic execution methods.
    • The paper also discusses feedback-driven evolutionary strategies extensively used in grey-box fuzzers to improve bug discovery rates.

Strong Numerical Results and Claims

The survey reviews several studies highlighting the effectiveness of specific fuzzing strategies. For instance, it describes how AFLFast, an evolution of AFL, achieves significant performance gains by incorporating path frequency into fuzz scheduling decisions, showing up to a 7-fold increase in bug discovery over traditional methods.

Practical and Theoretical Implications

Fuzzing has become a cornerstone in secure software development practices, integrated into the development pipelines of major companies such as Adobe, Google, and Microsoft. This survey underlines the critical nature of fuzzing as a preemptive security measure against potential exploits, emphasizing the need for continuous innovation and integration with other testing techniques to enhance its efficacy and efficiency.

Future Developments

Through an exploration of current methodologies and limitations, the paper points toward future research directions in fuzzing. There remains a significant opportunity for improving fuzzing processes through advanced machine learning integration, more efficient symbolic execution, and better orchestration of hybrid fuzzers that combine multiple fuzzing paradigms.

Conclusion

"The Art, Science, and Engineering of Fuzzing: A Survey" is instrumental in dissecting and cataloguing the vast body of fuzzing research. Its logical framework and detailed exploration of fuzzing techniques provide researchers and practitioners a robust basis for understanding current practices and challenges in fuzzing. This survey helps delineate paths for advancing fuzzing technology, ensuring its continued relevance in fortifying software against vulnerabilities.

User Edit Pencil Streamline Icon: https://streamlinehq.com
Authors (7)
  1. Valentin J. M. Manes (1 paper)
  2. HyungSeok Han (3 papers)
  3. Choongwoo Han (1 paper)
  4. Sang Kil Cha (3 papers)
  5. Manuel Egele (9 papers)
  6. Edward J. Schwartz (7 papers)
  7. Maverick Woo (2 papers)
Citations (400)