Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2976002.2976017acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

QuickFuzz: an automatic random fuzzer for common file formats

Published: 08 September 2016 Publication History

Abstract

Fuzzing is a technique that involves testing programs using invalid or erroneous inputs. Most fuzzers require a set of valid inputs as a starting point, in which mutations are then introduced. QuickFuzz is a fuzzer that leverages QuickCheck-style random test-case generationto automatically test programs that manipulate common file formats by fuzzing. We rely on existing Haskell implementations of file-format-handling libraries found on Hackage, the community-driven Haskell code repository. We have tried QuickFuzz in the wild and found that the approach is effective in discovering vulnerabilities in real-world implementations of browsers, image processing utilities and file compressors among others. In addition, we introduce a mechanism to automatically derive random generators for the types representing these formats. QuickFuzz handles most well-known image and media formats, and can be used to test programs and libraries written in any language.

References

[1]
Bitflip. Sulley: a pure-python fully automated and unattended fuzzing framework. https://github.com/OpenRCE/ sulley, 2011.
[2]
CACA Labs. zzuf - multi-purpose fuzzer. http://caca. zoy.org/wiki/zzuf, 2010.
[3]
S. K. Cha, T. Avgerinos, A. Rebert, and D. Brumley. Unleashing Mayhem on Binary Code. In Proceedings of the 2012 IEEE Symposium on Security and Privacy, SP ’12. IEEE Computer Society, 2012.
[4]
K. Claessen and J. Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. Acm sigplan notices, 46(4):53–64, 2011.
[5]
K. Claessen, J. Dureg˚ard, and M. H. Pałka. Generating Constrained RandomData withUniformDistribution, pages 18– 34. Springer International Publishing, Cham, 2014. ISBN 978-3-319-07151-0.
[6]
P. Godefroid, A. Kiezun, and M. Y. Levin. Grammar-based Whitebox Fuzzing. SIGPLAN Not., 2008.
[7]
Google. honggfuzz: a general-purpose, easy-to-use fuzzer with interesting analysis options. https://github.com/ aoh/radamsa, 2010.
[8]
Michal Zalewski. American Fuzzy Lop: a security-oriented fuzzer. http://lcamtuf.coredump.cx/afl/, 2010.
[9]
B. P. Miller, L. Fredriksen, and B. So. An Empirical Study of the Reliability of UNIX Utilities. Commun. ACM, 33(12): 32–44, Dec. 1990. ISSN 0001-0782.
[10]
Mozilla. Dharma: a generation-based, context-free grammar fuzzer. https://github.com/MozillaSecurity/ dharma, 2015.
[11]
Neil Mitchell. Data.Derive is a library and a tool for deriving instances for Haskell programs. http://hackage. haskell.org/package/derive, 2006.
[12]
N. Nethercote and J. Seward. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. SIGPLAN Not., 42(6):89–100, 2007.
[13]
Oulu University Secure Programming Group. A Crash Course to Radamsa. https://github.com/aoh/radamsa, 2010.
[14]
M. H. Pałka, K. Claessen, A. Russo, and J. Hughes. Testing an Optimising Compiler by Generating Random Lambda Terms. In Proceedings of the 6th International Workshop on Automation of Software Test, AST ’11, pages 91–97, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0592-1.
[15]
K. Serebryany, D. Bruening, A. Potapenko, and D. Vyukov. Addresssanitizer: A fast address sanity checker. USENIX ATC’12, pages 28–28, 2012.
[16]
T. Sheard and S. P. Jones. Template Meta-programming for Haskell. SIGPLAN Not., 37(12):60–75, Dec. 2002. ISSN 0362-1340.
[18]
M. Sutton, A. Greene, and P. Amini. Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.
[19]
Vincent Berthoux. Juicy.Pixels: Haskell library to load & save pictures. https://hackage.haskell.org/package/ JuicyPixels, 2012.
[20]
X. Yang, Y. Chen, E. Eide, and J. Regehr. Finding and Understanding Bugs in C Compilers. In Proceedings of the 32Nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’11, pages 283–294, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0663-8.
[21]
A. Zeller and R. Hildebrandt. Simplifying and Isolating Failure-Inducing Input. IEEE Trans. Softw. Eng., 28(2):183– 200, 2002.

Cited By

View all
  • (2023)Generation-based Differential Fuzzing for Deep Learning LibrariesACM Transactions on Software Engineering and Methodology10.1145/362815933:2(1-28)Online publication date: 23-Dec-2023
  • (2022)Fuzzing: A Survey for RoadmapACM Computing Surveys10.1145/351234554:11s(1-36)Online publication date: 9-Sep-2022
  • (2022)Detecting Compiler Warning Defects Via Diversity-Guided Program MutationIEEE Transactions on Software Engineering10.1109/TSE.2021.311918648:11(4411-4432)Online publication date: 1-Nov-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Haskell 2016: Proceedings of the 9th International Symposium on Haskell
September 2016
192 pages
ISBN:9781450344340
DOI:10.1145/2976002
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 September 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Fuzzing
  2. Hackage
  3. Haskell
  4. QuickCheck

Qualifiers

  • Research-article

Conference

ICFP'16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 57 of 143 submissions, 40%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)32
  • Downloads (Last 6 weeks)6
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Generation-based Differential Fuzzing for Deep Learning LibrariesACM Transactions on Software Engineering and Methodology10.1145/362815933:2(1-28)Online publication date: 23-Dec-2023
  • (2022)Fuzzing: A Survey for RoadmapACM Computing Surveys10.1145/351234554:11s(1-36)Online publication date: 9-Sep-2022
  • (2022)Detecting Compiler Warning Defects Via Diversity-Guided Program MutationIEEE Transactions on Software Engineering10.1109/TSE.2021.311918648:11(4411-4432)Online publication date: 1-Nov-2022
  • (2022)DeltaFuzz: Historical Version Information Guided Fuzz TestingJournal of Computer Science and Technology10.1007/s11390-021-1663-737:1(29-49)Online publication date: 1-Feb-2022
  • (2021)DeepbugProceedings of the 2021 5th International Conference on Electronic Information Technology and Computer Engineering10.1145/3501409.3501538(713-718)Online publication date: 22-Oct-2021
  • (2021)MagmaProceedings of the ACM on Measurement and Analysis of Computing Systems10.1145/34283344:3(1-29)Online publication date: 15-Jun-2021
  • (2021)Challenges in Firmware Re-Hosting, Emulation, and AnalysisACM Computing Surveys10.1145/342316754:1(1-36)Online publication date: 2-Jan-2021
  • (2021)The Art, Science, and Engineering of Fuzzing: A SurveyIEEE Transactions on Software Engineering10.1109/TSE.2019.294656347:11(2312-2331)Online publication date: 1-Nov-2021
  • (2021)MutagenProceedings of the 43rd International Conference on Software Engineering: Companion Proceedings10.1109/ICSE-Companion52605.2021.00053(120-122)Online publication date: 25-May-2021
  • (2021)Fuzzing Mobile Robot Environments for Fast Automated Crash Detection2021 IEEE International Conference on Robotics and Automation (ICRA)10.1109/ICRA48506.2021.9561627(5417-5423)Online publication date: 30-May-2021
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media