
This is necessary to change public_deps to deps in proto_library template so that we can remove unnecessary inputs dependency from ninja build files. Original CL is: https://crrev.com/c/6442961 This CL was uploaded by git cl split. Bug: 402356473 Change-Id: I0309b2ced5adedea8a191618ead94463ea24eaed Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6483148 Commit-Queue: Paul Semel <paulsemel@chromium.org> Auto-Submit: Takuto Ikuta <tikuta@chromium.org> Reviewed-by: Paul Semel <paulsemel@chromium.org> Cr-Commit-Position: refs/heads/main@{#1450494}
Fuzz testing in Chromium
Fuzzing is a testing technique that feeds auto-generated inputs to a piece of target code in an attempt to crash the code. It's one of the most effective methods we have for finding security and stability issues (see go/fuzzing-success). You can learn more about the benefits of fuzzing at go/why-fuzz.
This documentation covers the in-process guided fuzzing approach employed by different fuzzing engines, such as libFuzzer or [AFL]. To learn more about out-of-process fuzzers, please refer to the Blackbox fuzzing page in the ClusterFuzz documentation.
[TOC]
Getting Started
In Chromium, you can easily create and submit fuzz targets. The targets are automatically discovered by buildbots, built with different fuzzing engines, then uploaded to the distributed ClusterFuzz fuzzing system to run at scale.
You should fuzz any code which absorbs inputs from untrusted sources, such as the web. If the code parses, decodes, or otherwise manipulates that input, it's an especially good idea to fuzz it.
Create your first fuzz target and submit it by stepping through our Getting Started Guide.
Advanced Topics
-
Creating a fuzz target that expects a protobuf instead of a byte stream as input.
*** note Note: You can also fuzz code that needs multiple mutated inputs, or to generate inputs defined by a grammar.
-
Reproducing bugs found by libFuzzer/AFL and reported by ClusterFuzz.
-
Fuzzing mojo interfaces using automatically generated libprotobuf-mutator fuzzers.
Further Reading
- LibFuzzer integration with Chromium and ClusterFuzz.
- Detailed references for other integration parts.
- Writing fuzzers for the non-browser parts of Chrome OS.
- Fuzzing browsertests if you need to fuzz multiple Chrome subsystems.
Trophies
- Issues automatically filed by ClusterFuzz.
- Issues filed manually after running fuzz targets.
- Bugs found in PDFium by manual fuzzing.
- Bugs found in open-source projects with libFuzzer.
Other Links
- Guided in-process fuzzing of Chrome components blog post.
- ClusterFuzz Stats for fuzz targets built with AddressSanitizer and libFuzzer.