BackREST: A Model-Based Feedback-Driven Greybox Fuzzer for Web Applications
Fran\c{c}ois Gauthier (1), Behnaz Hassanshahi (1), Benjamin, Selwyn-Smith (1), Trong Nhan Mai (1), Max Schl\"uter (1), Micah Williams, (2) ((1) Oracle Labs, (2) Oracle)

TL;DR
BackREST is an automated, model-based web fuzzer that uses feedback-driven techniques to efficiently discover vulnerabilities, outperforming existing fuzzers in speed and vulnerability detection, including zero-day exploits.
Contribution
It introduces a novel, fully automated approach to model web applications via REST inference and combines coverage and taint analysis for effective fuzzing.
Findings
Achieves 7.4x to 25.9x speedups over existing fuzzers.
Detects more vulnerabilities, including six previously unreported zero-days.
Successfully discloses vulnerabilities in popular libraries like Sequelize and Mongodb.
Abstract
Following the advent of the American Fuzzy Lop (AFL), fuzzing had a surge in popularity, and modern day fuzzers range from simple blackbox random input generators to complex whitebox concolic frameworks that are capable of deep program introspection. Web application fuzzers, however, did not benefit from the tremendous advancements in fuzzing for binary programs and remain largely blackbox in nature. This paper introduces BackREST, a fully automated, model-based, coverage- and taint-driven fuzzer that uses its feedback loops to find more critical vulnerabilities, faster (speedups between 7.4x and 25.9x). To model the server-side of web applications, BackREST automatically infers REST specifications through directed state-aware crawling. Comparing BackREST against three other web fuzzers on five large (>500 KLOC) Node.js applications shows how it consistently achieves comparable coverage…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
