├── .allstar └── binary_artifacts.yaml ├── .dockerignore ├── .gcloudignore ├── .github └── workflows │ ├── benchmarks.yml │ ├── build_and_test_run_fuzzer_benchmarks.py │ └── presubmit.yml ├── .gitignore ├── .gitmodules ├── .pylintrc ├── .style.yapf ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── alembic.ini ├── analysis ├── README.md ├── benchmark_results.py ├── coverage_data_utils.py ├── data_utils.py ├── experiment_results.py ├── generate_report.py ├── notebooks │ ├── README.md │ ├── example.ipynb │ └── ranking.ipynb ├── plotting.py ├── queries.py ├── rendering.py ├── report_templates │ ├── default.html │ └── experimental.html ├── stat_tests.py ├── test_coverage_data_utils.py ├── test_data │ ├── bug_experiment_1_df.csv │ ├── bug_experiment_2_df.csv │ ├── expected_1.csv │ ├── expected_2.csv │ ├── pairwise_unique_coverage_heatmap.png │ └── unique_coverage_ranking.png ├── test_data_utils.py ├── test_experiment_results.py ├── test_plotting.py ├── test_queries.py └── test_stat_tests.py ├── benchmarks ├── bloaty_fuzz_target │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── bloaty_fuzz_target_52948c │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── curl_curl_fuzzer_http │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── freetype2_ftfuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── harfbuzz_hb-shape-fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── harfbuzz_hb-shape-fuzzer_17863b │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── jsoncpp_jsoncpp_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── lcms_cms_transform_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ ├── cms_transform_fuzzer.cc │ └── seeds │ │ └── seed ├── libjpeg-turbo_libjpeg_turbo_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ ├── libjpeg_turbo_fuzzer.cc │ └── seeds │ │ └── seed.jpg ├── libpcap_fuzz_both │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── libpng_libpng_read_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── seeds │ │ └── seed.png ├── libxml2_xml │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── target.cc ├── libxml2_xml_e85b9b │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── target.cc ├── libxslt_xpath │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── mbedtls_fuzz_dtlsclient │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── mbedtls_fuzz_dtlsclient_7c6b0e │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── mruby_mruby_fuzzer_8c8bbd │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ ├── mruby.dict │ └── mruby_fuzzer.c ├── openh264_decoder_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ ├── decoder_fuzzer.cpp │ └── testcases │ │ ├── 18438 │ │ ├── 18458 │ │ ├── 18459 │ │ ├── 18460 │ │ ├── 18480 │ │ ├── 18486 │ │ ├── 18520 │ │ ├── 18521 │ │ ├── 18522 │ │ ├── 18533 │ │ ├── 18644 │ │ └── 18743 ├── openssl_x509 │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── openthread_ot-ip6-send-fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── build.sh ├── oss_fuzz_benchmark_integration.py ├── php_php-fuzz-parser_0dbedb │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ ├── cosmic.list │ └── testcases │ │ ├── 24387 │ │ ├── 24401 │ │ ├── 24403 │ │ ├── 24405 │ │ ├── 24423 │ │ ├── 24436 │ │ ├── 24567 │ │ └── 24627 ├── proj4_proj_crs_to_crs_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ └── third_party │ │ └── build.sh ├── re2_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── target.cc ├── sqlite3_ossfuzz │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── ossfuzz.dict ├── stb_stbi_read_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── testcases │ │ ├── 22580 │ │ ├── 22584 │ │ ├── 22587 │ │ ├── 22596 │ │ ├── 22605 │ │ ├── 22620 │ │ ├── 22640 │ │ ├── 22648 │ │ ├── 22651 │ │ ├── 23153 │ │ └── 24185 ├── systemd_fuzz-link-parser │ ├── Dockerfile │ └── benchmark.yaml ├── vorbis_decode_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── seeds │ │ └── sound.ogg ├── woff2_convert_woff2ttf_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── target.cc └── zlib_zlib_uncompress_fuzzer │ ├── Dockerfile │ ├── benchmark.yaml │ ├── build.sh │ └── zlib_uncompress_fuzzer.cc ├── common ├── benchmark_config.py ├── benchmark_utils.py ├── config_utils.py ├── conftest.py ├── environment.py ├── experiment_path.py ├── experiment_utils.py ├── filestore_utils.py ├── filesystem.py ├── fuzzer_config.py ├── fuzzer_stats.py ├── fuzzer_utils.py ├── gce.py ├── gcloud.py ├── gsutil.py ├── local_filestore.py ├── logs.py ├── new_process.py ├── queue_utils.py ├── random_corpus_fuzzing_utils.py ├── retry.py ├── sanitizer.py ├── test_benchmark_config.py ├── test_benchmark_utils.py ├── test_common_utils.py ├── test_data │ └── printer.py ├── test_experiment_utils.py ├── test_filestore_utils.py ├── test_filesystem.py ├── test_fuzzer_stats.py ├── test_fuzzer_utils.py ├── test_gce.py ├── test_gcloud.py ├── test_gsutil.py ├── test_local_filestore.py ├── test_new_process.py ├── utils.py └── yaml_utils.py ├── compose ├── e2e-test.yaml └── fuzzbench.yaml ├── conftest.py ├── database ├── alembic │ ├── README │ ├── env.py │ ├── script.py.mako │ └── versions │ │ ├── 26dcc0e12872_add_experiment_description.py │ │ ├── 43dc3aacd80e_git_hash.py │ │ ├── 541d041d662a_support_private.py │ │ ├── 5c5f07c6f2fa_initial.py │ │ ├── 72f7db0e7dfe_support_preemptibles.py │ │ ├── 77022369cea4_time_ended.py │ │ ├── 8c237d2acbc4_add_crash_table.py │ │ ├── a7089f396110_scheduler.py │ │ ├── c83ac04855b4_add_filestore_name.py │ │ └── eec6e5667b87_add_fuzzer_stats.py ├── models.py └── utils.py ├── docker ├── base-image │ └── Dockerfile ├── benchmark-builder │ ├── Dockerfile │ ├── checkout_commit.py │ └── fuzzer_build ├── benchmark-runner │ ├── Dockerfile │ └── startup-runner.sh ├── dispatcher-image │ ├── Dockerfile │ └── startup-dispatcher.sh ├── fuzzbench │ └── Dockerfile ├── gcb │ └── base-images.yaml ├── generate_makefile.py ├── image_types.yaml ├── test_generate_makefile.py └── worker │ ├── Dockerfile │ └── startup-worker.sh ├── docs ├── 404.html ├── Gemfile ├── Gemfile.lock ├── README.md ├── _config.yml ├── _data │ └── fuzzers.yaml ├── _includes │ └── head_custom.html ├── developing-fuzzbench │ ├── adding_a_new_benchmark.md │ ├── custom_analysis_and_reports.md │ └── developing_fuzzbench.md ├── faq.md ├── getting-started │ ├── adding_a_new_fuzzer.md │ ├── contributing_code.md │ ├── getting_started.md │ └── prerequisites.md ├── images │ ├── FuzzBench-architecture.png │ └── FuzzBench-service.png ├── index.md ├── internal-documentation │ └── internal_documentation.md ├── publications.md ├── reference │ ├── benchmarks.md │ ├── benchmarks.py │ ├── experiment_data.md │ ├── fuzzer_row.html │ ├── fuzzers.md │ ├── glossary.md │ ├── how_it_works.md │ ├── reference.md │ ├── report.md │ └── useful_links.md ├── running-a-cloud-experiment │ ├── running_a_cloud_experiment.md │ ├── running_an_experiment.md │ └── setting_up_a_google_cloud_project.md └── running-a-local-experiment │ └── running_a_local_experiment.md ├── experiment ├── build │ ├── build_utils.py │ ├── builder.py │ ├── docker_images.py │ ├── gcb_build.py │ ├── generate_cloudbuild.py │ ├── local_build.py │ ├── test_builder.py │ ├── test_docker_images.py │ ├── test_gcb_build.py │ └── test_generate_cloudbuild.py ├── cloud │ ├── secret_manager.py │ └── service_account_key.py ├── conftest.py ├── dispatcher.py ├── measurer │ ├── coverage_utils.py │ ├── datatypes.py │ ├── measure_manager.py │ ├── measure_worker.py │ ├── run_coverage.py │ ├── run_crashes.py │ ├── standalone.py │ ├── test_coverage_utils.py │ ├── test_data │ │ ├── afl-corpus.tgz │ │ ├── cov_summary.json │ │ ├── cov_summary_defective.json │ │ ├── covered-pcs.txt │ │ ├── libfuzzer-corpus.tgz │ │ ├── llvm_tools │ │ │ ├── llvm-cov │ │ │ ├── llvm-profdata │ │ │ └── llvm-symbolizer │ │ ├── test_measure_snapshot_coverage │ │ │ ├── corpus-archive-0001.tar.gz │ │ │ └── freetype2_ftfuzzer-coverage │ │ ├── test_run_coverage │ │ │ ├── corpus │ │ │ │ └── 0 │ │ │ ├── crash-corpus │ │ │ │ ├── 0 │ │ │ │ ├── crash1 │ │ │ │ └── crash2 │ │ │ ├── fuzz-target │ │ │ ├── fuzz-target-clang-cov │ │ │ ├── fuzz_target.cc │ │ │ ├── third_party │ │ │ │ └── StandaloneFuzzTargetMain.c │ │ │ └── timeout-corpus │ │ │ │ └── timeout │ │ └── test_run_crashes │ │ │ ├── crash-corpus │ │ │ ├── 0 │ │ │ └── crash │ │ │ ├── fuzz-target │ │ │ └── fuzz_target.c │ ├── test_measure_manager.py │ ├── test_measure_worker.py │ ├── test_run_coverage.py │ └── test_run_crashes.py ├── reporter.py ├── reproduce_experiment.py ├── resources │ ├── dispatcher-startup-script-template.sh │ └── runner-startup-script-template.sh ├── run_experiment.py ├── runner.py ├── schedule_measure_workers.py ├── scheduler.py ├── stop_experiment.py ├── test_data │ ├── experiment-config.yaml │ ├── local-experiment-config.yaml │ └── test_runner │ │ ├── MultipleConstraintsOnSmallInputTest │ │ └── fuzz-target_seed_corpus.zip ├── test_dispatcher.py ├── test_reporter.py ├── test_run_experiment.py ├── test_runner.py └── test_scheduler.py ├── fuzzbench ├── jobs.py ├── local-experiment-config.yaml ├── run_experiment.py ├── test_e2e │ ├── end-to-end-test-config.yaml │ └── test_e2e_run.py └── worker.py ├── fuzzers ├── afl │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── afl_2_52_b │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── afl_qemu │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── afl_random_favored │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── afl_virginmap │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflcc │ ├── aflcc_mock.c │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflfast │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_frida │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ ├── get_frida_entry.sh │ └── runner.Dockerfile ├── aflplusplus_qemu │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_um_parallel │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_um_prioritize │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_um_prioritize_75 │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_um_random │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflplusplus_um_random_75 │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_default │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_no_favs │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_wrs │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_wrs_rf │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_wrs_rf_rp │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflpp_random_wrs_rp │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflsmart │ ├── README.md │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── aflsmart_plusplus │ ├── README.md │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── centipede │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── centipede_function_filter │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── coverage │ ├── builder.Dockerfile │ └── fuzzer.py ├── darwin │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── eclipser │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── eclipser_aflplusplus │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── eclipser_new │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── ecofuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── fafuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── fairfuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── fuzzolic_aflplusplus_fuzzy │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── fuzzolic_aflplusplus_z3 │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── glibfuzzer │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── gramatron │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── fuzzer.yaml │ └── runner.Dockerfile ├── grimoire │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── fuzzer.yaml │ └── runner.Dockerfile ├── hastefuzz │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_qemu │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_um_parallel │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_um_prioritize │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_um_prioritize_75 │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_um_random │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── honggfuzz_um_random_75 │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── klee │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── klee_driver.cpp │ ├── klee_mock.c │ └── runner.Dockerfile ├── lafintel │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── learnperffuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── libafl │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── libafl_libfuzzer │ ├── builder.Dockerfile │ ├── description.md │ ├── fuzzer.py │ └── runner.Dockerfile ├── libfuzzer │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── patch.diff │ └── runner.Dockerfile ├── manul │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── mopt │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── nautilus │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── fuzzer.yaml │ └── runner.Dockerfile ├── neuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── pastis │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── patches │ │ └── honggfuzz-3a8f2ae-pastis.patch │ └── runner.Dockerfile ├── pythia_bb │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── pythia_effect_bb │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symcc_afl │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symcc_afl_single │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symcc_aflplusplus │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symcc_aflplusplus_single │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symqemu_aflplusplus │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── symsan │ ├── CMakeLists_bloaty.txt │ ├── build_freetype2.sh │ ├── build_proj.sh │ ├── builder.Dockerfile │ ├── bz2.abilist │ ├── cares.abilist │ ├── fres.sh │ ├── fuz.sh │ ├── fuzzer.py │ ├── gcry.abilist │ ├── glib.abilist │ ├── libfuzz-harness-proxy.c │ ├── pcre.abilist │ ├── runner.Dockerfile │ └── xml.abilist ├── test_fuzzers.py ├── test_utils.py ├── token_level │ ├── builder.Dockerfile │ ├── fuzzer.py │ ├── fuzzer.yaml │ └── runner.Dockerfile ├── tortoisefuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── utils.py ├── weizz_qemu │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile └── wingfuzz │ ├── builder.Dockerfile │ ├── fuzzer.py │ └── runner.Dockerfile ├── presubmit.py ├── pytest.ini ├── requirements.txt ├── service ├── Dockerfile ├── core-fuzzers.yaml ├── experiment-config.yaml ├── experiment-requests.yaml ├── gcbrun_experiment.py ├── gsutil_bucket_index │ └── third_party │ │ └── index.html ├── run.bash ├── run_experiment_cloudbuild.yaml └── setup.bash ├── src_analysis ├── benchmark_dependencies.py ├── change_utils.py ├── diff_utils.py ├── experiment_changes.py ├── fuzzer_dependencies.py ├── test_benchmark_dependencies.py ├── test_change_utils.py ├── test_experiment_changes.py └── test_fuzzer_dependencies.py ├── test_libs ├── test_data │ └── afl_fuzzer_stats └── utils.py └── third_party └── sancov.py /.allstar/binary_artifacts.yaml: -------------------------------------------------------------------------------- 1 | # Exemption reason: This repo uses binary artifacts for integration tests. 2 | # Exemption timeframe: permanent/temporary 3 | optConfig: 4 | optOut: true 5 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.pyd 3 | *.pyo 4 | .git 5 | .pytest_cache 6 | .pytype 7 | .venv 8 | **__pycache__* 9 | docs 10 | report* -------------------------------------------------------------------------------- /.gcloudignore: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Ignore everything in .gitignore. 16 | #!include:.gitignore 17 | 18 | # Ignore .git folder. 19 | .git/ 20 | 21 | docs/ 22 | 23 | third_party/oss-fuzz/build 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Ignore the configuration directory created by locally-launched experiments. 16 | config/ 17 | 18 | # Byte-compiled / optimized / DLL files. 19 | __pycache__/ 20 | *.py[cod] 21 | *$py.class 22 | 23 | .pytype/ 24 | 25 | # Virtualenv 26 | .venv 27 | 28 | # Reports generated by FuzzBench. 29 | report/ 30 | 31 | # Directories created by Jekyll. 32 | .bundle/ 33 | docs/_site/ 34 | docs/vendor/ 35 | 36 | # Auto-generated build files. 37 | docker/generated.mk 38 | 39 | # Emacs backup files. 40 | *~ 41 | \#*\# 42 | 43 | .vscode 44 | 45 | # Vim backup files. 46 | .*.swp 47 | 48 | # Diff files from matplotlib 49 | *-failed-diff.png 50 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/.gitmodules -------------------------------------------------------------------------------- /.style.yapf: -------------------------------------------------------------------------------- 1 | [style] 2 | based_on_style = google 3 | column_limit = 80 4 | indent_width = 4 5 | split_before_named_assigns = true 6 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We'd love to accept your patches and contributions to this project. There are 4 | just a few small guidelines you need to follow. 5 | 6 | ## Contributor License Agreement 7 | 8 | Contributions to this project must be accompanied by a Contributor License 9 | Agreement. You (or your employer) retain the copyright to your contribution; 10 | this simply gives us permission to use and redistribute your contributions as 11 | part of the project. Head over to to see 12 | your current agreements on file or to sign a new one. 13 | 14 | You generally only need to submit a CLA once, so if you've already submitted one 15 | (even if it was for a different project), you probably don't need to do it 16 | again. 17 | 18 | ## Code reviews 19 | 20 | All submissions, including submissions by project members, require review. We 21 | use GitHub pull requests for this purpose. Consult 22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more 23 | information on using pull requests. 24 | 25 | ## Community Guidelines 26 | 27 | This project follows 28 | [Google's Open Source Community Guidelines](https://opensource.google/conduct/). 29 | -------------------------------------------------------------------------------- /analysis/notebooks/README.md: -------------------------------------------------------------------------------- 1 | # Example Google Colab / Jupyter Notebooks 2 | 3 | - [![Open example.ipynb In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google/fuzzbench/blob/master/analysis/notebooks/example.ipynb) A basic example of using analysis functions whose results are not included in the default report. 4 | 5 | - [![Open ranking.ipynb In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google/fuzzbench/blob/master/analysis/notebooks/ranking.ipynb) A simple example that compares the existing ranking methods available in the [data_utils](../data_utils.py) module. 6 | 7 | -------------------------------------------------------------------------------- /analysis/test_data/pairwise_unique_coverage_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/analysis/test_data/pairwise_unique_coverage_heatmap.png -------------------------------------------------------------------------------- /analysis/test_data/unique_coverage_ranking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/analysis/test_data/unique_coverage_ranking.png -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y \ 21 | cmake \ 22 | ninja-build \ 23 | g++ \ 24 | libz-dev 25 | 26 | RUN git clone \ 27 | https://github.com/google/bloaty.git 28 | 29 | WORKDIR bloaty 30 | COPY build.sh $SRC/ 31 | -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 52948c107c8f81045e7f9223ec02706b19cfa882 16 | commit_date: 2022-11-11T17:41:21+00:00 17 | fuzz_target: fuzz_target 18 | project: bloaty 19 | unsupported_fuzzers: 20 | - klee 21 | - aflplusplus_cmplog_double 22 | - symcc_aflplusplus_single 23 | - eclipser_aflplusplus 24 | - aflplusplus_qemu_double 25 | - fuzzolic_aflplusplus_z3 26 | - symqemu_aflplusplus 27 | - fuzzolic_aflplusplus_fuzzy 28 | - fuzzolic_aflplusplus_z3dict 29 | -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2017 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | cd $WORK 19 | cmake -G Ninja -DBUILD_TESTING=false $SRC/bloaty 20 | ninja -j$(nproc) 21 | cp fuzz_target $OUT 22 | zip -j $OUT/fuzz_target_seed_corpus.zip $SRC/bloaty/tests/testdata/fuzz_corpus/* 23 | -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target_52948c/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y \ 21 | cmake \ 22 | ninja-build \ 23 | g++ \ 24 | libz-dev 25 | 26 | RUN git clone \ 27 | https://github.com/google/bloaty.git 28 | 29 | WORKDIR bloaty 30 | COPY build.sh $SRC/ 31 | -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target_52948c/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # 6440215450877952 16 | commit: 52948c107c8f81045e7f9223ec02706b19cfa882 17 | commit_date: 2022-11-11T17:41:21+00:00 18 | fuzz_target: fuzz_target 19 | project: bloaty 20 | type: bug 21 | unsupported_fuzzers: 22 | - klee 23 | - aflplusplus_cmplog_double 24 | - symcc_aflplusplus_single 25 | - eclipser_aflplusplus 26 | - aflplusplus_qemu_double 27 | - fuzzolic_aflplusplus_z3 28 | - symqemu_aflplusplus 29 | - fuzzolic_aflplusplus_fuzzy 30 | - fuzzolic_aflplusplus_z3dict 31 | -------------------------------------------------------------------------------- /benchmarks/bloaty_fuzz_target_52948c/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2017 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | cd $WORK 19 | cmake -G Ninja -DBUILD_TESTING=false $SRC/bloaty 20 | ninja -j$(nproc) 21 | cp fuzz_target $OUT 22 | zip -j $OUT/fuzz_target_seed_corpus.zip $SRC/bloaty/tests/testdata/fuzz_corpus/* 23 | -------------------------------------------------------------------------------- /benchmarks/curl_curl_fuzzer_http/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | # Curl will be checked out to the commit hash specified in benchmark.yaml. 20 | RUN git clone https://github.com/curl/curl-fuzzer /src/curl_fuzzer 21 | RUN git -C /src/curl_fuzzer checkout dd486c1e5910e722e43c451d4de928ac80f5967d 22 | RUN git clone --depth 1 https://github.com/curl/curl.git /src/curl 23 | 24 | # Use curl-fuzzer's scripts to get latest dependencies. 25 | RUN $SRC/curl_fuzzer/scripts/ossfuzzdeps.sh 26 | 27 | WORKDIR $SRC/curl_fuzzer 28 | COPY build.sh $SRC/ 29 | -------------------------------------------------------------------------------- /benchmarks/curl_curl_fuzzer_http/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: a20f74a16ae1e89be170eeaa6059b37e513392a4 16 | commit_date: 2022-10-20T09:10:15+00:00 17 | fuzz_target: curl_fuzzer_http 18 | project: curl 19 | unsupported_fuzzers: 20 | - klee 21 | - libfuzzer_dataflow 22 | - libfuzzer_dataflow_load 23 | - libfuzzer_dataflow_store 24 | - centipede 25 | - centipede_function_filter 26 | -------------------------------------------------------------------------------- /benchmarks/curl_curl_fuzzer_http/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2016 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | # Run the OSS-Fuzz script in the curl-fuzzer project. 19 | ./ossfuzz.sh 20 | -------------------------------------------------------------------------------- /benchmarks/freetype2_ftfuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get upgrade -y && \ 21 | apt-get install -y \ 22 | make \ 23 | autoconf \ 24 | libtool \ 25 | wget 26 | 27 | RUN git clone git://git.sv.nongnu.org/freetype/freetype2.git 28 | RUN git clone https://github.com/unicode-org/text-rendering-tests.git TRT 29 | RUN wget https://github.com/libarchive/libarchive/releases/download/v3.4.3/libarchive-3.4.3.tar.xz 30 | 31 | COPY * $SRC/ 32 | -------------------------------------------------------------------------------- /benchmarks/freetype2_ftfuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: cd02d359a6d0455e9d16b87bf9665961c4699538 16 | commit_date: 2023-01-28T16:04:38+00:00 17 | fuzz_target: ftfuzzer 18 | project: freetype2 19 | -------------------------------------------------------------------------------- /benchmarks/freetype2_ftfuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | mkdir $OUT/seeds 17 | # TRT/fonts is the full seed folder, but they're too big 18 | cp TRT/fonts/TestKERNOne.otf $OUT/seeds/ 19 | cp TRT/fonts/TestGLYFOne.ttf $OUT/seeds/ 20 | 21 | tar xf libarchive-3.4.3.tar.xz 22 | 23 | cd libarchive-3.4.3 24 | ./configure --disable-shared 25 | make clean 26 | make -j $(nproc) 27 | make install 28 | cd .. 29 | 30 | cd freetype2 31 | ./autogen.sh 32 | ./configure --with-harfbuzz=no --with-bzip2=no --with-png=no --without-zlib 33 | make clean 34 | make all -j $(nproc) 35 | 36 | $CXX $CXXFLAGS -std=c++11 -I include -I . src/tools/ftfuzzer/ftfuzzer.cc \ 37 | objs/.libs/libfreetype.a $FUZZER_LIB -L /usr/local/lib -larchive \ 38 | -o $OUT/ftfuzzer 39 | -------------------------------------------------------------------------------- /benchmarks/harfbuzz_hb-shape-fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y ragel pkg-config 21 | 22 | RUN git clone https://github.com/harfbuzz/harfbuzz.git 23 | 24 | WORKDIR harfbuzz 25 | COPY build.sh $SRC/ 26 | -------------------------------------------------------------------------------- /benchmarks/harfbuzz_hb-shape-fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: cb47dca74cbf6d147aac9cf3067f249555aa68b1 16 | commit_date: 2023-01-29T17:03:52+00:00 17 | fuzz_target: hb-shape-fuzzer 18 | project: harfbuzz 19 | unsupported_fuzzers: 20 | - klee 21 | -------------------------------------------------------------------------------- /benchmarks/harfbuzz_hb-shape-fuzzer_17863b/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y ragel pkg-config 21 | 22 | RUN git clone https://github.com/harfbuzz/harfbuzz.git 23 | 24 | WORKDIR harfbuzz 25 | COPY build.sh $SRC/ 26 | -------------------------------------------------------------------------------- /benchmarks/harfbuzz_hb-shape-fuzzer_17863b/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # 4523349576908800 16 | commit: 17863BD16BC82C54FB68627CBF1E65702693DD09 17 | commit_date: 2022-07-23T04:38:08+0000 18 | fuzz_target: hb-shape-fuzzer 19 | project: harfbuzz 20 | type: bug 21 | unsupported_fuzzers: 22 | - klee 23 | -------------------------------------------------------------------------------- /benchmarks/jsoncpp_jsoncpp_fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | RUN apt-get update && apt-get install -y build-essential make curl wget 19 | 20 | # Install latest cmake. 21 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh && \ 22 | chmod +x cmake-3.14.5-Linux-x86_64.sh && \ 23 | ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/usr/local" 24 | 25 | RUN git clone https://github.com/open-source-parsers/jsoncpp 26 | WORKDIR jsoncpp 27 | 28 | COPY build.sh $SRC/ 29 | 30 | -------------------------------------------------------------------------------- /benchmarks/jsoncpp_jsoncpp_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 8190e061bc2d95da37479a638aa2c9e483e58ec6 16 | commit_date: 2022-07-14T21:57:37+00:00 17 | fuzz_target: jsoncpp_fuzzer 18 | project: jsoncpp 19 | unsupported_fuzzers: 20 | - klee 21 | - aflplusplus_cmplog_double 22 | - symcc_aflplusplus_single 23 | - eclipser_aflplusplus 24 | - aflplusplus_qemu_double 25 | - fuzzolic_aflplusplus_z3 26 | - symqemu_aflplusplus 27 | - fuzzolic_aflplusplus_fuzzy 28 | - fuzzolic_aflplusplus_z3dict 29 | -------------------------------------------------------------------------------- /benchmarks/jsoncpp_jsoncpp_fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2018 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | mkdir -p build 19 | cd build 20 | cmake -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ 21 | -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF -DJSONCPP_WITH_TESTS=OFF \ 22 | -DBUILD_SHARED_LIBS=OFF -G "Unix Makefiles" .. 23 | make 24 | 25 | # Compile fuzzer. 26 | $CXX $CXXFLAGS -I../include $LIB_FUZZING_ENGINE \ 27 | ../src/test_lib_json/fuzz.cpp -o $OUT/jsoncpp_fuzzer \ 28 | lib/libjsoncpp.a 29 | 30 | # Add dictionary. 31 | cp $SRC/jsoncpp/src/test_lib_json/fuzz.dict $OUT/jsoncpp_fuzzer.dict 32 | -------------------------------------------------------------------------------- /benchmarks/lcms_cms_transform_fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y \ 21 | make \ 22 | automake \ 23 | libtool \ 24 | wget 25 | 26 | RUN git clone https://github.com/mm2/Little-CMS.git 27 | 28 | RUN wget -qO $OUT/cms_transform_fuzzer.dict \ 29 | https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/icc.dict 30 | COPY cms_transform_fuzzer.cc build.sh $SRC/ 31 | ADD seeds /opt/seeds 32 | -------------------------------------------------------------------------------- /benchmarks/lcms_cms_transform_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: f0d963261b28253999e239a844ac74d5a8960f40 16 | commit_date: 2023-01-25T18:20:28+0000 17 | fuzz_target: cms_transform_fuzzer 18 | project: lcms 19 | unsupported_fuzzers: 20 | - symcc_afl 21 | - symcc_afl_single 22 | - symcc_aflplusplus 23 | - afldd 24 | - aflpp_vs_dd 25 | -------------------------------------------------------------------------------- /benchmarks/lcms_cms_transform_fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | cd Little-CMS 17 | ./autogen.sh 18 | ./configure 19 | make -j $(nproc) 20 | 21 | $CXX $CXXFLAGS $SRC/cms_transform_fuzzer.cc -I include/ src/.libs/liblcms2.a \ 22 | $FUZZER_LIB -o $OUT/cms_transform_fuzzer 23 | cp -r /opt/seeds $OUT/ 24 | -------------------------------------------------------------------------------- /benchmarks/lcms_cms_transform_fuzzer/seeds/seed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/lcms_cms_transform_fuzzer/seeds/seed -------------------------------------------------------------------------------- /benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 3b19db4e6e7493a748369974819b4c5fa84c7614 16 | commit_date: 2023-01-28T00:24:41+00:00 17 | fuzz_target: libjpeg_turbo_fuzzer 18 | project: libjpeg-turbo 19 | unsupported_fuzzers: 20 | - aflcc 21 | -------------------------------------------------------------------------------- /benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | set -e 17 | set -u 18 | 19 | cat fuzz/branches.txt | while read branch; do 20 | pushd libjpeg-turbo.$branch 21 | if [ "$branch" = "main" ]; then 22 | sh fuzz/build.sh 23 | else 24 | sh fuzz/build.sh _$branch 25 | fi 26 | popd 27 | done 28 | -------------------------------------------------------------------------------- /benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/seeds/seed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/libjpeg-turbo_libjpeg_turbo_fuzzer/seeds/seed.jpg -------------------------------------------------------------------------------- /benchmarks/libpcap_fuzz_both/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | RUN apt-get update && \ 19 | apt-get install -y make cmake flex bison 20 | 21 | RUN git clone https://github.com/the-tcpdump-group/libpcap.git libpcap 22 | 23 | # For corpus as wireshark. 24 | RUN git clone https://github.com/the-tcpdump-group/tcpdump.git tcpdump && \ 25 | git -C tcpdump checkout 032e4923e5202ea4d5a6d1cead83ed1927135874 26 | 27 | WORKDIR $SRC 28 | COPY build.sh $SRC/ 29 | 30 | -------------------------------------------------------------------------------- /benchmarks/libpcap_fuzz_both/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 17ff63e88ea99112a905eefc6f862dac20de09e1 16 | commit_date: 2023-01-07T10:15:39+0000 17 | fuzz_target: fuzz_both 18 | project: libpcap 19 | unsupported_fuzzers: 20 | - klee 21 | - symcc_afl 22 | - symcc_afl_single 23 | - symcc_aflplusplus 24 | - symcc_aflplusplus_single 25 | - aflplusplus_cmplog_double 26 | - eclipser_aflplusplus 27 | - aflplusplus_qemu_double 28 | - fuzzolic_aflplusplus_z3 29 | - symqemu_aflplusplus 30 | - fuzzolic_aflplusplus_fuzzy 31 | - fuzzolic_aflplusplus_z3dict 32 | - afldd 33 | - aflpp_vs_dd 34 | -------------------------------------------------------------------------------- /benchmarks/libpng_libpng_read_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: cd0ea2a7f53b603d3d9b5b891c779c430047b39a 16 | commit_date: 2023-01-09T13:17:31+00:00 17 | fuzz_target: libpng_read_fuzzer 18 | project: libpng 19 | -------------------------------------------------------------------------------- /benchmarks/libpng_libpng_read_fuzzer/seeds/seed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/libpng_libpng_read_fuzzer/seeds/seed.png -------------------------------------------------------------------------------- /benchmarks/libxml2_xml/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y --no-install-recommends \ 21 | make autoconf libtool pkg-config \ 22 | zlib1g-dev zlib1g-dev:i386 liblzma-dev liblzma-dev:i386 23 | 24 | # Build requires automake 1.16.3 25 | RUN curl -LO http://mirrors.kernel.org/ubuntu/pool/main/a/automake-1.16/automake_1.16.5-1.3_all.deb && \ 26 | apt install ./automake_1.16.5-1.3_all.deb 27 | 28 | RUN git clone https://gitlab.gnome.org/GNOME/libxml2.git 29 | 30 | WORKDIR libxml2 31 | COPY build.sh $SRC/ 32 | -------------------------------------------------------------------------------- /benchmarks/libxml2_xml/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: c7260a47f19e01f4f663b6a56fbdc2dafd8a6e7e 16 | commit_date: 2023-01-23T09:19:59+00:00 17 | fuzz_target: xml 18 | project: libxml2 19 | -------------------------------------------------------------------------------- /benchmarks/libxml2_xml/target.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | #include "libxml/xmlversion.h" 18 | #include "libxml/parser.h" 19 | #include "libxml/HTMLparser.h" 20 | #include "libxml/tree.h" 21 | 22 | void ignore (void * ctx, const char * msg, ...) {} 23 | 24 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { 25 | xmlSetGenericErrorFunc(NULL, &ignore); 26 | if (auto doc = xmlReadMemory(reinterpret_cast(data), size, 27 | "noname.xml", NULL, 0)) 28 | xmlFreeDoc(doc); 29 | return 0; 30 | } 31 | -------------------------------------------------------------------------------- /benchmarks/libxml2_xml_e85b9b/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y --no-install-recommends \ 21 | make autoconf libtool pkg-config \ 22 | zlib1g-dev zlib1g-dev:i386 liblzma-dev liblzma-dev:i386 23 | 24 | # Build requires automake 1.16.3 25 | RUN curl -LO http://mirrors.kernel.org/ubuntu/pool/main/a/automake-1.16/automake_1.16.5-1.3_all.deb && \ 26 | apt install ./automake_1.16.5-1.3_all.deb 27 | 28 | RUN git clone https://gitlab.gnome.org/GNOME/libxml2.git 29 | 30 | WORKDIR libxml2 31 | COPY build.sh $SRC/ 32 | -------------------------------------------------------------------------------- /benchmarks/libxml2_xml_e85b9b/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # 6233968358064128 16 | commit: E85F9B98A5389C69167176AE6600091E719EC38F 17 | commit_date: 2022-10-19T00:47:30+0000 18 | fuzz_target: xml 19 | project: libxml2 20 | type: bug 21 | -------------------------------------------------------------------------------- /benchmarks/libxml2_xml_e85b9b/target.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | #include "libxml/xmlversion.h" 18 | #include "libxml/parser.h" 19 | #include "libxml/HTMLparser.h" 20 | #include "libxml/tree.h" 21 | 22 | void ignore (void * ctx, const char * msg, ...) {} 23 | 24 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { 25 | xmlSetGenericErrorFunc(NULL, &ignore); 26 | if (auto doc = xmlReadMemory(reinterpret_cast(data), size, 27 | "noname.xml", NULL, 0)) 28 | xmlFreeDoc(doc); 29 | return 0; 30 | } 31 | -------------------------------------------------------------------------------- /benchmarks/libxslt_xpath/benchmark.yaml: -------------------------------------------------------------------------------- 1 | commit: 180cdb804efedcba363016fcf6cd3dbd2adca607 2 | commit_date: 2023-01-18T15:21:36+00:00 3 | fuzz_target: xpath 4 | project: libxslt 5 | unsupported_fuzzers: 6 | - aflcc 7 | - aflplusplus_qemu 8 | - aflplusplus_um_random 9 | - aflplusplus_um_random_75 10 | - aflplusplus_um_random_3 11 | - aflplusplus_um_random_6 12 | - aflplusplus_um_prioritize 13 | - aflplusplus_um_prioritize_75 14 | - aflplusplus_um_parallel 15 | - afl_um_random 16 | - afl_um_prioritize 17 | - afl_um_parallel 18 | - honggfuzz_um_random 19 | - honggfuzz_um_random_75 20 | - honggfuzz_um_prioritize 21 | - honggfuzz_um_prioritize_75 22 | - honggfuzz_um_parallel 23 | - eclipser_um_random 24 | - eclipser_um_random_75 25 | - eclipser_um_prioritize 26 | - eclipser_um_prioritize_75 27 | - eclipser_um_parallel 28 | - libfuzzer_um_random 29 | - libfuzzer_um_random_75 30 | - libfuzzer_um_prioritize 31 | - libfuzzer_um_prioritize_75 32 | - libfuzzer_um_parallel 33 | - aflplusplus_qemu_tracepc 34 | - aflplusplus_frida 35 | - klee 36 | - weizz_qemu 37 | - aflplusplus_cmplog_double 38 | - symcc_aflplusplus_single 39 | - eclipser_aflplusplus 40 | - aflplusplus_qemu_double 41 | - fuzzolic_aflplusplus_z3 42 | - symqemu_aflplusplus 43 | - fuzzolic_aflplusplus_fuzzy 44 | - fuzzolic_aflplusplus_z3dict 45 | -------------------------------------------------------------------------------- /benchmarks/mbedtls_fuzz_dtlsclient/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 169d9e6eb4096cb48aa25651f42b276089841087 16 | commit_date: 2023-01-27T09:05:00+00:00 17 | fuzz_target: fuzz_dtlsclient 18 | project: mbedtls 19 | unsupported_fuzzers: 20 | - klee 21 | -------------------------------------------------------------------------------- /benchmarks/mbedtls_fuzz_dtlsclient_7c6b0e/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # 6244298269523968 16 | commit: 7C6B0E4464E1C39B2CFC572AC6BD0674A104FFC5 17 | commit_date: 2022-10-25T17:55:29+0000 18 | fuzz_target: fuzz_dtlsclient 19 | project: mbedtls 20 | type: bug 21 | unsupported_fuzzers: 22 | - klee 23 | -------------------------------------------------------------------------------- /benchmarks/mruby_mruby_fuzzer_8c8bbd/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | RUN apt-get update && apt-get install -y build-essential ruby bison ninja-build \ 19 | cmake zlib1g-dev libbz2-dev liblzma-dev 20 | RUN git clone \ 21 | https://github.com/mruby/mruby 22 | RUN git clone --depth 1 https://github.com/bshastry/mruby_seeds.git mruby_seeds 23 | WORKDIR mruby 24 | COPY build.sh *.c *.options *.dict $SRC/ 25 | -------------------------------------------------------------------------------- /benchmarks/mruby_mruby_fuzzer_8c8bbd/benchmark.yaml: -------------------------------------------------------------------------------- 1 | commit: 8c8bbd94dce3b3eabcf72c674e690516c075b0ee 2 | commit_date: 2023-02-03T04:41:10+0000 3 | fuzz_target: mruby_fuzzer 4 | project: mruby 5 | type: bug 6 | unsupported_fuzzers: 7 | -------------------------------------------------------------------------------- /benchmarks/mruby_mruby_fuzzer_8c8bbd/mruby_fuzzer.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | int LLVMFuzzerTestOneInput(uint8_t *Data, size_t size) { 7 | if (size < 1) { 8 | return 0; 9 | } 10 | char *code = malloc(size+1); 11 | memcpy(code, Data, size); 12 | code[size] = '\0'; 13 | mrb_state *mrb = mrb_open(); 14 | mrb_load_string(mrb, code); 15 | mrb_close(mrb); 16 | free(code); 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2018 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | MAINTAINER twsmith@mozilla.com 19 | 20 | RUN dpkg --add-architecture i386 && \ 21 | apt-get update && \ 22 | apt-get install -y \ 23 | libstdc++-9-dev libstdc++-9-dev:i386 nasm subversion 24 | 25 | RUN git clone \ 26 | https://github.com/cisco/openh264.git 27 | 28 | WORKDIR openh264 29 | COPY build.sh decoder_fuzzer.cpp $SRC/ 30 | -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | commit: 045aeac1dd01df12dec7b1ef8191b3193cf4273c 2 | commit_date: 2023-01-04T08:01:08+00:00 3 | fuzz_target: decoder_fuzzer 4 | project: openh264 5 | unsupported_fuzzers: 6 | - aflcc 7 | - afl_qemu 8 | - aflplusplus_qemu 9 | - aflplusplus_qemu_tracepc 10 | - aflplusplus_frida 11 | - honggfuzz_qemu 12 | - klee 13 | - lafintel 14 | - weizz_qemu 15 | - aflplusplus_cmplog_double 16 | - symcc_aflplusplus_single 17 | - eclipser_aflplusplus 18 | - aflplusplus_qemu_double 19 | - fuzzolic_aflplusplus_z3 20 | - symqemu_aflplusplus 21 | - fuzzolic_aflplusplus_fuzzy 22 | - fuzzolic_aflplusplus_z3dict 23 | - tortoisefuzz 24 | -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2018 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | # build 19 | if [[ $CXXFLAGS = *sanitize=memory* ]]; then 20 | ASM_BUILD=No 21 | else 22 | ASM_BUILD=Yes 23 | fi 24 | make -j$(nproc) ARCH=$ARCHITECTURE USE_ASM=$ASM_BUILD BUILDTYPE=Debug libraries 25 | $CXX $CXXFLAGS -o $OUT/decoder_fuzzer -I./codec/api/wels -I./codec/console/common/inc -I./codec/common/inc -L. $LIB_FUZZING_ENGINE $SRC/decoder_fuzzer.cpp libopenh264.a 26 | -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18438: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18438 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18458: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18458 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18459: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18459 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18460: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18460 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18480: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18480 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18486: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18486 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18520: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18520 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18521: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18521 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18522: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18522 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18533: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18533 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18644: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18644 -------------------------------------------------------------------------------- /benchmarks/openh264_decoder_fuzzer/testcases/18743: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/benchmarks/openh264_decoder_fuzzer/testcases/18743 -------------------------------------------------------------------------------- /benchmarks/openssl_x509/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | RUN apt-get update && apt-get install -y make 19 | RUN git clone \ 20 | --depth 1 \ 21 | --branch openssl-3.0.7 \ 22 | https://github.com/openssl/openssl.git 23 | WORKDIR openssl 24 | COPY build.sh $SRC/ 25 | -------------------------------------------------------------------------------- /benchmarks/openssl_x509/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: b0593c086dd303af31dc1e30233149978dd613c4 16 | commit_date: 2020-02-10 09:22:32+00:00 17 | fuzz_target: x509 18 | project: openssl 19 | unsupported_fuzzers: 20 | - klee 21 | - cfctx_dataflow_svf 22 | - cfctx_dataflow_svf_llc 23 | - tortoisefuzz 24 | -------------------------------------------------------------------------------- /benchmarks/openthread_ot-ip6-send-fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && apt-get install -y cmake ninja-build 20 | RUN git clone https://github.com/openthread/openthread 21 | 22 | WORKDIR openthread 23 | COPY build.sh *.options $SRC/ 24 | -------------------------------------------------------------------------------- /benchmarks/openthread_ot-ip6-send-fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | commit: 25506997f286fdbfa72725f4cee78c922c896255 16 | commit_date: 2023-01-26T18:02:16+00:00 17 | fuzz_target: ot-ip6-send-fuzzer 18 | project: openthread 19 | unsupported_fuzzers: 20 | - klee 21 | -------------------------------------------------------------------------------- /benchmarks/openthread_ot-ip6-send-fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | bash tests/fuzz/oss-fuzz-build 17 | -------------------------------------------------------------------------------- /benchmarks/php_php-fuzz-parser_0dbedb/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | 19 | RUN apt-get update && \ 20 | apt-get install -y \ 21 | autoconf automake libtool bison re2c pkg-config 22 | 23 | RUN git clone \ 24 | https://github.com/php/php-src.git 25 | 26 | WORKDIR php-src 27 | COPY build.sh *.options $SRC/ 28 | -------------------------------------------------------------------------------- /benchmarks/php_php-fuzz-parser_0dbedb/cosmic.list: -------------------------------------------------------------------------------- 1 | deb http://archive.ubuntu.com/ubuntu/ cosmic universe 2 | 3 | -------------------------------------------------------------------------------- /benchmarks/php_php-fuzz-parser_0dbedb/testcases/24387: -------------------------------------------------------------------------------- 1 | 16 | #include 17 | 18 | #include "woff2_dec.h" 19 | 20 | // Entry point for LibFuzzer. 21 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 22 | std::string buf; 23 | woff2::WOFF2StringOut out(&buf); 24 | out.SetMaxSize(30 * 1024 * 1024); 25 | woff2::ConvertWOFF2ToTTF(data, size, &out); 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /benchmarks/zlib_zlib_uncompress_fuzzer/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/oss-fuzz-base/base-builder@sha256:87ca1e9e19235e731fac8de8d1892ebe8d55caf18e7aa131346fc582a2034fdd 18 | RUN apt-get update && apt-get install -y make autoconf automake libtool 19 | RUN git clone --depth 1 -b develop https://github.com/madler/zlib.git 20 | WORKDIR zlib 21 | COPY build.sh zlib_uncompress_fuzzer.cc $SRC/ 22 | -------------------------------------------------------------------------------- /benchmarks/zlib_zlib_uncompress_fuzzer/benchmark.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################i 16 | 17 | commit: d71dc66fa8a153fb6e7c626847095d9697a6cf42 18 | commit_date: 2020-05-06 00:00:00+00:00 19 | fuzz_target: zlib_uncompress_fuzzer 20 | project: zlib 21 | -------------------------------------------------------------------------------- /benchmarks/zlib_zlib_uncompress_fuzzer/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | # Copyright 2016 Google Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | ################################################################################ 17 | 18 | ./configure 19 | make -j$(nproc) clean 20 | make -j$(nproc) all 21 | 22 | # Do not make check as there are tests that fail when compiled with MSAN. 23 | # make -j$(nproc) check 24 | 25 | b=$(basename -s .cc $SRC/zlib_uncompress_fuzzer.cc) 26 | $CXX $CXXFLAGS -std=c++11 -I. $SRC/zlib_uncompress_fuzzer.cc -o $OUT/$b $LIB_FUZZING_ENGINE ./libz.a 27 | 28 | zip $OUT/seed_corpus.zip *.* 29 | -------------------------------------------------------------------------------- /benchmarks/zlib_zlib_uncompress_fuzzer/zlib_uncompress_fuzzer.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | #include "zlib.h" 10 | 11 | static Bytef buffer[256 * 1024] = { 0 }; 12 | 13 | // Entry point for LibFuzzer. 14 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 15 | uLongf buffer_length = static_cast(sizeof(buffer)); 16 | if (Z_OK != uncompress(buffer, &buffer_length, data, 17 | static_cast(size))) { 18 | return 0; 19 | } 20 | return 0; 21 | } 22 | -------------------------------------------------------------------------------- /common/config_utils.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | """Provides helper functions to obtain configurations.""" 16 | 17 | 18 | def validate_and_expand(config): 19 | """Validates |config| and returns the expanded configuration.""" 20 | # TODO: move the logic from experiment/run_experiment.py to here. 21 | return config 22 | -------------------------------------------------------------------------------- /common/fuzzer_config.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Tools for using oss-fuzz.""" 15 | import functools 16 | import os 17 | 18 | from common import utils 19 | from common import yaml_utils 20 | 21 | FUZZERS_DIR = os.path.join(utils.ROOT_DIR, 'fuzzers') 22 | 23 | 24 | def get_config_file(fuzzer): 25 | """Returns the path to the config for a fuzzer.""" 26 | return os.path.join(FUZZERS_DIR, fuzzer, 'fuzzer.yaml') 27 | 28 | 29 | @functools.lru_cache(maxsize=None) 30 | def get_config(fuzzer): 31 | """Returns a dictionary containing the config for a fuzzer.""" 32 | config_file = get_config_file(fuzzer) 33 | if os.path.exists(config_file): 34 | return yaml_utils.read(config_file) 35 | return {} 36 | -------------------------------------------------------------------------------- /common/queue_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Code for setting up a work queue with rq.""" 15 | import redis 16 | import rq 17 | import rq.job 18 | 19 | from common import experiment_utils 20 | 21 | 22 | def initialize_queue(redis_host): 23 | """Returns a redis-backed rq queue.""" 24 | queue_name = experiment_utils.get_experiment_name() 25 | redis_connection = redis.Redis(host=redis_host) 26 | queue = rq.Queue(queue_name, connection=redis_connection) 27 | return queue 28 | 29 | 30 | def get_all_jobs(queue): 31 | """Returns all the jobs in queue.""" 32 | job_ids = queue.get_job_ids() 33 | return rq.job.Job.fetch_many(job_ids, queue.connection) 34 | -------------------------------------------------------------------------------- /common/test_common_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Tests for utils.py""" 15 | 16 | from common import utils 17 | 18 | 19 | def test_get_retry_delay(): 20 | """"Tests if get delay is working as expected""" 21 | delay = 3 22 | backoff = 2 23 | 24 | first_try = 1 25 | first_try_delay = utils.get_retry_delay(first_try, delay, backoff) 26 | # Backoff should have no effect on first try 27 | assert first_try_delay == delay 28 | 29 | second_try = 2 30 | second_try_delay = utils.get_retry_delay(second_try, delay, backoff) 31 | assert second_try_delay == delay * backoff 32 | -------------------------------------------------------------------------------- /common/test_data/printer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | """Test program used by new_process's integration tests.""" 16 | 17 | import sys 18 | import time 19 | 20 | 21 | def main(): 22 | """Print and sleep in an infinite loop.""" 23 | while True: 24 | print('Hello, World!') 25 | sys.stdout.flush() 26 | time.sleep(10) 27 | 28 | 29 | if __name__ == '__main__': 30 | main() 31 | -------------------------------------------------------------------------------- /common/yaml_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Yaml helpers.""" 15 | import yaml 16 | 17 | 18 | def read(yaml_filename): 19 | """Reads and loads yaml file specified by |yaml_filename|.""" 20 | with open(yaml_filename, encoding='utf-8') as file_handle: 21 | return yaml.load(file_handle, yaml.SafeLoader) 22 | 23 | 24 | def write(yaml_filename, data): 25 | """Writes |data| to a new yaml file at |yaml_filename|.""" 26 | with open(yaml_filename, 'w', encoding='utf-8') as file_handle: 27 | return yaml.dump(data, file_handle) 28 | -------------------------------------------------------------------------------- /compose/e2e-test.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | 5 | run-tests: 6 | image: fuzzbench 7 | links: 8 | - queue-server 9 | environment: 10 | E2E_INTEGRATION_TEST: 1 11 | command: python3 -m pytest -vv fuzzbench/test_e2e/test_e2e_run.py 12 | 13 | run-experiment: 14 | environment: 15 | EXPERIMENT_CONFIG: fuzzbench/test_e2e/end-to-end-test-config.yaml 16 | -------------------------------------------------------------------------------- /compose/fuzzbench.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | 5 | run-experiment: 6 | image: fuzzbench 7 | build: 8 | context: ../ 9 | dockerfile: docker/fuzzbench/Dockerfile 10 | links: 11 | - queue-server 12 | 13 | worker: 14 | image: fuzzbench 15 | environment: 16 | RQ_REDIS_URL: redis://queue-server 17 | PYTHONPATH: . 18 | command: python3 fuzzbench/worker.py 19 | volumes: 20 | # Allow access to the host's docker daemon. 21 | - /var/run/docker.sock:/var/run/docker.sock 22 | links: 23 | - queue-server 24 | depends_on: 25 | - run-experiment 26 | 27 | queue-server: 28 | image: redis 29 | -------------------------------------------------------------------------------- /database/alembic/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration. -------------------------------------------------------------------------------- /database/alembic/script.py.mako: -------------------------------------------------------------------------------- 1 | """${message} 2 | 3 | Revision ID: ${up_revision} 4 | Revises: ${down_revision | comma,n} 5 | Create Date: ${create_date} 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | ${imports if imports else ""} 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = ${repr(up_revision)} 14 | down_revision = ${repr(down_revision)} 15 | branch_labels = ${repr(branch_labels)} 16 | depends_on = ${repr(depends_on)} 17 | 18 | 19 | def upgrade(): 20 | ${upgrades if upgrades else "pass"} 21 | 22 | 23 | def downgrade(): 24 | ${downgrades if downgrades else "pass"} 25 | -------------------------------------------------------------------------------- /database/alembic/versions/26dcc0e12872_add_experiment_description.py: -------------------------------------------------------------------------------- 1 | """Add experiment description 2 | 3 | Revision ID: 26dcc0e12872 4 | Revises: c83ac04855b4 5 | Create Date: 2020-10-13 09:04:25.881798 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = '26dcc0e12872' 14 | down_revision = 'c83ac04855b4' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | op.add_column('experiment', sa.Column( 21 | 'description', sa.UnicodeText(), nullable=True)) 22 | 23 | 24 | def downgrade(): 25 | op.drop_column('experiment', 'description') 26 | -------------------------------------------------------------------------------- /database/alembic/versions/43dc3aacd80e_git_hash.py: -------------------------------------------------------------------------------- 1 | """git_hash 2 | 3 | Revision ID: 43dc3aacd80e 4 | Revises: a7089f396110 5 | Create Date: 2020-03-27 10:48:08.075971 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = '43dc3aacd80e' 13 | down_revision = 'a7089f396110' 14 | branch_labels = None 15 | depends_on = None 16 | 17 | 18 | def upgrade(): 19 | # ### commands auto generated by Alembic - please adjust! ### 20 | op.add_column('experiment', sa.Column('git_hash', 21 | sa.String(), 22 | nullable=True)) 23 | # ### end Alembic commands ### 24 | 25 | 26 | def downgrade(): 27 | # ### commands auto generated by Alembic - please adjust! ### 28 | op.drop_column('experiment', 'git_hash') 29 | # ### end Alembic commands ### 30 | -------------------------------------------------------------------------------- /database/alembic/versions/541d041d662a_support_private.py: -------------------------------------------------------------------------------- 1 | """Support private 2 | 3 | Revision ID: 541d041d662a 4 | Revises: 72f7db0e7dfe 5 | Create Date: 2020-07-09 16:11:47.498579 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = '541d041d662a' 14 | down_revision = '72f7db0e7dfe' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | # ### commands auto generated by Alembic - please adjust! ### 21 | op.add_column('experiment', sa.Column( 22 | 'private', sa.Boolean(), nullable=True)) 23 | 24 | # Let's make every experiment we've done so far private so we don't leak any 25 | # nonpublic experiments we've done, the ones we want we can mark as 26 | # nonprivate. 27 | op.execute('UPDATE experiment SET private = true') 28 | op.alter_column('experiment', 'private', nullable=False) 29 | # ### end Alembic commands ### 30 | 31 | 32 | def downgrade(): 33 | # ### commands auto generated by Alembic - please adjust! ### 34 | op.drop_column('experiment', 'private') 35 | # ### end Alembic commands ### 36 | -------------------------------------------------------------------------------- /database/alembic/versions/72f7db0e7dfe_support_preemptibles.py: -------------------------------------------------------------------------------- 1 | """Support preemptibles 2 | 3 | Revision ID: 72f7db0e7dfe 4 | Revises: 43dc3aacd80e 5 | Create Date: 2020-05-21 10:43:00.687089 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = '72f7db0e7dfe' 14 | down_revision = '43dc3aacd80e' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | # ### commands auto generated by Alembic - please adjust! ### 21 | op.add_column('trial', sa.Column('preempted', sa.Boolean(), nullable=True)) 22 | op.execute('UPDATE trial SET preempted = false WHERE preempted IS NULL') 23 | op.alter_column('trial', 'preempted', nullable=False) 24 | 25 | op.add_column('trial', sa.Column('preemptible', sa.Boolean(), nullable=True)) 26 | op.execute('UPDATE trial SET preemptible = false WHERE preemptible IS NULL') 27 | op.alter_column('trial', 'preemptible', nullable=False) 28 | 29 | # ### end Alembic commands ### 30 | 31 | 32 | def downgrade(): 33 | # ### commands auto generated by Alembic - please adjust! ### 34 | op.drop_column('trial', 'preemptible') 35 | op.drop_column('trial', 'preempted') 36 | # ### end Alembic commands ### 37 | -------------------------------------------------------------------------------- /database/alembic/versions/77022369cea4_time_ended.py: -------------------------------------------------------------------------------- 1 | """time_ended 2 | 3 | Revision ID: 77022369cea4 4 | Revises: 541d041d662a 5 | Create Date: 2020-08-10 22:27:28.544136 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = '77022369cea4' 14 | down_revision = '541d041d662a' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | # ### commands auto generated by Alembic - please adjust! ### 21 | op.add_column('experiment', sa.Column('time_ended', 22 | sa.DateTime(), 23 | nullable=True)) 24 | 25 | # ### end Alembic commands ### 26 | 27 | 28 | def downgrade(): 29 | # ### commands auto generated by Alembic - please adjust! ### 30 | op.drop_column('experiment', 'time_ended') 31 | # ### end Alembic commands ### 32 | -------------------------------------------------------------------------------- /database/alembic/versions/c83ac04855b4_add_filestore_name.py: -------------------------------------------------------------------------------- 1 | """Add filestore name 2 | 3 | Revision ID: c83ac04855b4 4 | Revises: 77022369cea4 5 | Create Date: 2020-08-11 16:31:36.089779 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = 'c83ac04855b4' 14 | down_revision = '77022369cea4' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | # ### commands auto generated by Alembic - please adjust! ### 21 | op.add_column('experiment', sa.Column( 22 | 'experiment_filestore', sa.String(), nullable=True)) 23 | # ### end Alembic commands ### 24 | 25 | 26 | def downgrade(): 27 | # ### commands auto generated by Alembic - please adjust! ### 28 | op.drop_column('experiment', 'experiment_filestore') 29 | # ### end Alembic commands ### 30 | -------------------------------------------------------------------------------- /database/alembic/versions/eec6e5667b87_add_fuzzer_stats.py: -------------------------------------------------------------------------------- 1 | """Add fuzzer stats 2 | 3 | Revision ID: eec6e5667b87 4 | Revises: 26dcc0e12872 5 | Create Date: 2020-10-16 10:31:36.241617 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = 'eec6e5667b87' 14 | down_revision = '26dcc0e12872' 15 | branch_labels = None 16 | depends_on = None 17 | 18 | 19 | def upgrade(): 20 | # ### commands auto generated by Alembic - please adjust! ### 21 | op.add_column('snapshot', sa.Column('fuzzer_stats', sa.JSON(), nullable=True)) 22 | # ### end Alembic commands ### 23 | 24 | 25 | def downgrade(): 26 | # ### commands auto generated by Alembic - please adjust! ### 27 | op.drop_column('snapshot', 'fuzzer_stats') 28 | # ### end Alembic commands ### 29 | -------------------------------------------------------------------------------- /docker/benchmark-builder/fuzzer_build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2023 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | PYTHONPATH=$SRC python3 -u -c "from fuzzers import utils; utils.initialize_env(); from fuzzers.$FUZZER import fuzzer; fuzzer.build()" -------------------------------------------------------------------------------- /docker/benchmark-runner/startup-runner.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -e 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # The runner runs at a higher priority than other processes to ensure that it's 17 | # able to finish infrastructure tasks regardless of the fuzzing workload. 18 | export RUNNER_NICENESS="-5" 19 | nice -n $RUNNER_NICENESS python3 $ROOT_DIR/experiment/runner.py 20 | -------------------------------------------------------------------------------- /docker/worker/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | ENV WORK /work 18 | ENV SRC $WORK/src 19 | RUN mkdir -p $SRC 20 | 21 | ADD . $SRC/ 22 | 23 | ENTRYPOINT /bin/bash $SRC/docker/worker/startup-worker.sh -------------------------------------------------------------------------------- /docker/worker/startup-worker.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | rq worker $EXPERIMENT --url redis://$REDIS_HOST:6379 17 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | 18 | 19 |
20 |

404

21 | 22 |

Page not found :(

23 |
24 | -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem 'github-pages', group: :jekyll_plugins 3 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Readme 2 | 3 | Use the following instructions to make documentation changes locally. 4 | 5 | ## Prerequisites 6 | ```bash 7 | sudo apt install ruby bundler 8 | bundle install --path vendor/bundle 9 | ``` 10 | 11 | ## Serving locally 12 | ```bash 13 | bundle exec jekyll serve 14 | ``` 15 | 16 | or from the project root: 17 | 18 | ```bash 19 | make docs-serve 20 | ``` 21 | 22 | ## Theme documentation 23 | We are using the [just the docs](https://just-the-docs.github.io/just-the-docs/) 24 | theme. 25 | -------------------------------------------------------------------------------- /docs/_includes/head_custom.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/developing-fuzzbench/developing_fuzzbench.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Developing FuzzBench 4 | has_children: true 5 | nav_order: 3 6 | permalink: /developing-fuzzbench/ 7 | --- 8 | 9 | # Developing FuzzBench 10 | 11 | This section walks you through making code changes to FuzzBench that aren't 12 | fuzzer integrations. They assume you have already read the docs on 13 | [Getting started]({{site.baseurl }}/getting-started/). 14 | -------------------------------------------------------------------------------- /docs/getting-started/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Getting started 4 | has_children: true 5 | nav_order: 2 6 | permalink: /getting-started/ 7 | --- 8 | 9 | # Getting started 10 | 11 | These pages walk you through the process of setting up FuzzBench locally for 12 | integrating a fuzzer to use in the FuzzBench service. Other users who wish to 13 | develop FuzzBench should also start here as this explains the prequisites for 14 | develolpment and testing. 15 | -------------------------------------------------------------------------------- /docs/images/FuzzBench-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/docs/images/FuzzBench-architecture.png -------------------------------------------------------------------------------- /docs/images/FuzzBench-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/docs/images/FuzzBench-service.png -------------------------------------------------------------------------------- /docs/internal-documentation/internal_documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Internal Documentation 4 | has_children: true 5 | nav_order: 8 6 | permalink: /internal-documentation/ 7 | --- 8 | 9 | # Internal documentation 10 | 11 | This section contains internal documentation that is meant for FuzzBench 12 | maintainers. It is not useful for end users of FuzzBench. 13 | -------------------------------------------------------------------------------- /docs/reference/reference.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Reference 4 | has_children: true 5 | nav_order: 6 6 | permalink: /reference/ 7 | --- 8 | 9 | # Reference 10 | -------------------------------------------------------------------------------- /docs/reference/useful_links.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Useful links 4 | nav_order: 7 5 | permalink: /reference/useful-links/ 6 | parent: Reference 7 | --- 8 | 9 | # Useful links 10 | 11 | - TOC 12 | {:toc} 13 | --- 14 | 15 | ## Reports 16 | 17 | All FuzzBench reports are available on our website `fuzzbench.com`. You can 18 | access them [here](https://www.fuzzbench.com/reports/index.html). 19 | 20 | ## Blog posts 21 | 22 | Announcement blog post: 23 | 24 | [https://security.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html](https://security.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html) 25 | 26 | [https://opensource.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html](https://opensource.googleblog.com/2020/03/fuzzbench-fuzzer-benchmarking-as-service.html) 27 | -------------------------------------------------------------------------------- /docs/running-a-cloud-experiment/running_a_cloud_experiment.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Running an experiment on your Cloud project 4 | has_children: true 5 | nav_order: 4 6 | permalink: /running-a-cloud-experiment/ 7 | --- 8 | 9 | # Running your own experiment 10 | 11 | This section walks you through running a fuzzer benchmarking experiment using 12 | the FuzzBench platform. 13 | -------------------------------------------------------------------------------- /experiment/measurer/datatypes.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Module for common data types shared under the measurer module.""" 15 | import collections 16 | 17 | SnapshotMeasureRequest = collections.namedtuple( 18 | 'SnapshotMeasureRequest', ['fuzzer', 'benchmark', 'trial_id', 'cycle']) 19 | 20 | RetryRequest = collections.namedtuple( 21 | 'RetryRequest', ['fuzzer', 'benchmark', 'trial_id', 'cycle']) 22 | -------------------------------------------------------------------------------- /experiment/measurer/test_data/afl-corpus.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/afl-corpus.tgz -------------------------------------------------------------------------------- /experiment/measurer/test_data/cov_summary_defective.json: -------------------------------------------------------------------------------- 1 | {"defective_info":{"count":2,"covered":2,"percent":100}} -------------------------------------------------------------------------------- /experiment/measurer/test_data/covered-pcs.txt: -------------------------------------------------------------------------------- 1 | 0x425221 2 | 0x4252a6 3 | 0x42531d 4 | 0x42537d 5 | 0x4253a8 6 | 0x4253f4 7 | 0x42542d 8 | 0x42545c 9 | 0x4254ac -------------------------------------------------------------------------------- /experiment/measurer/test_data/libfuzzer-corpus.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/libfuzzer-corpus.tgz -------------------------------------------------------------------------------- /experiment/measurer/test_data/llvm_tools/llvm-cov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-cov -------------------------------------------------------------------------------- /experiment/measurer/test_data/llvm_tools/llvm-profdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-profdata -------------------------------------------------------------------------------- /experiment/measurer/test_data/llvm_tools/llvm-symbolizer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/llvm_tools/llvm-symbolizer -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_measure_snapshot_coverage/corpus-archive-0001.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_measure_snapshot_coverage/corpus-archive-0001.tar.gz -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_measure_snapshot_coverage/freetype2_ftfuzzer-coverage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_measure_snapshot_coverage/freetype2_ftfuzzer-coverage -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/corpus/0: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/crash-corpus/0: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/crash-corpus/crash1: -------------------------------------------------------------------------------- 1 | a -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/crash-corpus/crash2: -------------------------------------------------------------------------------- 1 | a -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/fuzz-target: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_coverage/fuzz-target -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/fuzz-target-clang-cov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_coverage/fuzz-target-clang-cov -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/fuzz_target.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Compile using: 16 | // clang -fsanitize-coverage=trace-pc-guard -O1 \ 17 | // third_party/StandaloneFuzzTargetMain.c fuzz_target.cc -o fuzz-target 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 24 | if (size < 0) 25 | return 0; 26 | 27 | if (data[0] == 'a') 28 | abort(); 29 | if (size < 4) 30 | return 0; 31 | if (data[0] == 't' && data[1] == 'i' && data[2] == 'm' && data[3] == 'e') 32 | while (true) ; 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_coverage/timeout-corpus/timeout: -------------------------------------------------------------------------------- 1 | time -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_crashes/crash-corpus/0: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_crashes/crash-corpus/crash: -------------------------------------------------------------------------------- 1 | a -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_crashes/fuzz-target: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/measurer/test_data/test_run_crashes/fuzz-target -------------------------------------------------------------------------------- /experiment/measurer/test_data/test_run_crashes/fuzz_target.c: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Compile using: 16 | // clang -fsanitize=fuzzer -fsanitize=address,undefined -O1 -gline-tables-only \ 17 | // fuzz_target.c -o fuzz-target 18 | 19 | #include 20 | #include 21 | 22 | int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 23 | if (size < 0) 24 | return 0; 25 | 26 | if (data[0] == 'a') 27 | abort(); 28 | if (size < 4) 29 | return 0; 30 | if (data[0] == 't' && data[1] == 'i' && data[2] == 'm' && data[3] == 'e') 31 | while (1) ; 32 | 33 | return 0; 34 | } 35 | -------------------------------------------------------------------------------- /experiment/test_data/local-experiment-config.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | experiment: test-experiment 17 | trials: 4 18 | max_total_time: 86400 19 | docker_registry: gcr.io/fuzzbench 20 | experiment_filestore: /tmp/experiment-data 21 | report_filestore: /tmp/web-reports 22 | local_experiment: true 23 | benchmarks: "benchmark-1,benchmark-2" 24 | git_hash: "git-hash" 25 | micro_experiment: false 26 | -------------------------------------------------------------------------------- /experiment/test_data/test_runner/MultipleConstraintsOnSmallInputTest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/test_data/test_runner/MultipleConstraintsOnSmallInputTest -------------------------------------------------------------------------------- /experiment/test_data/test_runner/fuzz-target_seed_corpus.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/google/fuzzbench/2a2ca6ae4c5d171a52b3e20d9b7a72da306fe5b8/experiment/test_data/test_runner/fuzz-target_seed_corpus.zip -------------------------------------------------------------------------------- /fuzzbench/local-experiment-config.yaml: -------------------------------------------------------------------------------- 1 | benchmarks: 2 | - freetype2-2017 3 | - bloaty_fuzz_target 4 | fuzzers: 5 | - afl 6 | - libfuzzer 7 | -------------------------------------------------------------------------------- /fuzzbench/test_e2e/end-to-end-test-config.yaml: -------------------------------------------------------------------------------- 1 | benchmarks: 2 | - bloaty_fuzz_target 3 | fuzzers: 4 | - libfuzzer 5 | -------------------------------------------------------------------------------- /fuzzbench/worker.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Self-defined worker module.""" 15 | import time 16 | 17 | import redis 18 | import rq 19 | 20 | 21 | def main(): 22 | """Sets up Redis connection and starts the worker.""" 23 | redis_connection = redis.Redis(host='queue-server') 24 | with rq.Connection(redis_connection): 25 | queue = rq.Queue('build_n_run_queue') 26 | worker = rq.Worker([queue]) 27 | 28 | while queue.count + queue.deferred_job_registry.count > 0: 29 | worker.work(burst=True) 30 | time.sleep(5) 31 | 32 | 33 | if __name__ == '__main__': 34 | main() 35 | -------------------------------------------------------------------------------- /fuzzers/afl/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/afl_2_52_b/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/afl_qemu/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for AFL qemu fuzzer.""" 15 | 16 | # As aflplusplus has the build for qemu already in there we include this. 17 | from fuzzers.aflplusplus import fuzzer as aflplusplus_fuzzer 18 | 19 | 20 | def build(): 21 | """Build benchmark.""" 22 | aflplusplus_fuzzer.build('qemu') 23 | 24 | 25 | def fuzz(input_corpus, output_corpus, target_binary): 26 | """Run fuzzer.""" 27 | # Necessary fuzzer options. 28 | flags = ['-Q'] 29 | aflplusplus_fuzzer.fuzz(input_corpus, 30 | output_corpus, 31 | target_binary, 32 | flags=flags) 33 | -------------------------------------------------------------------------------- /fuzzers/afl_qemu/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/afl_random_favored/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/afl_virginmap/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/aflcc/aflcc_mock.c: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | 18 | // these are defined in the LLVM passes, 19 | // but need to be mocked for persistent mode. 20 | void __afl_manual_init(void) { printf("manual_init\n"); } 21 | int __afl_persistent_loop(unsigned int max_cnt) { printf("peristent loop\n"); return 0; } 22 | uint32_t __afl_get_area_size(void) { printf("get area size\n"); return 0; } 23 | uint32_t __afl_get_bbarea_size(void) { printf("bb area size\n"); return 0; } -------------------------------------------------------------------------------- /fuzzers/aflcc/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt-get install -y zlib1g-dev \ 18 | libarchive-dev \ 19 | libglib2.0-dev \ 20 | libpsl-dev \ 21 | libbsd-dev 22 | 23 | -------------------------------------------------------------------------------- /fuzzers/aflfast/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for AFLFast fuzzer.""" 15 | 16 | from fuzzers.afl import fuzzer as afl_fuzzer 17 | 18 | 19 | def build(): 20 | """Build benchmark.""" 21 | afl_fuzzer.build() 22 | 23 | 24 | def fuzz(input_corpus, output_corpus, target_binary): 25 | """Run fuzzer.""" 26 | afl_fuzzer.prepare_fuzz_environment(input_corpus) 27 | 28 | # Write AFL's output to /dev/null to avoid filling up disk by writing too 29 | # much to log file. This is a problem in general with AFLFast but 30 | # particularly with the lcms benchmark. 31 | afl_fuzzer.run_afl_fuzz(input_corpus, 32 | output_corpus, 33 | target_binary, 34 | hide_output=True) 35 | -------------------------------------------------------------------------------- /fuzzers/aflfast/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus 2 | 3 | AFL++ fuzzer instance that has the following config active for all benchmarks: 4 | - PCGUARD instrumentation 5 | - cmplog feature 6 | - dict2file feature 7 | - "fast" power schedule 8 | - persistent mode + shared memory test cases 9 | 10 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 11 | 12 | [builder.Dockerfile](builder.Dockerfile) 13 | [fuzzer.py](fuzzer.py) 14 | [runner.Dockerfile](runner.Dockerfile) 15 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | # RUN apt-get update && apt-get upgrade && apt install -y unzip git gdb joe 25 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_frida/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus_qemu 2 | 3 | AFL++ fuzzer instance for binary-only fuzzing with frida_mode. 4 | The following config active for all benchmarks: 5 | - qemu_mode with: 6 | - entrypoint set to LLVMFuzzerTestOneInput 7 | - persisten mode set to LLVMFuzzerTestOneInput 8 | - shared memory testcases 9 | - cmplog 10 | 11 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 12 | 13 | [builder.Dockerfile](builder.Dockerfile) 14 | [fuzzer.py](fuzzer.py) 15 | [runner.Dockerfile](runner.Dockerfile) 16 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_frida/get_frida_entry.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2020 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | test -z "$1" -o -z "$2" -o '!' -e "$1" && exit 0 17 | 18 | file "$1" | grep -q executable && { 19 | nm "$1" | grep -i "T $2" | awk '{print"0x"$1}' 20 | exit 0 21 | } 22 | 23 | nm "$1" | grep -i "T $2" | '{print$1}' | tr a-f A-F | \ 24 | xargs echo "ibase=16;obase=10;555555554000 + " | bc | tr A-F a-f 25 | exit 0 26 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_frida/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt update -y && apt-get upgrade -y && \ 18 | apt-get install -y python3-pyelftools bc 19 | 20 | # This makes interactive docker run painless: 21 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 22 | #ENV AFL_MAP_SIZE=2621440 23 | ENV PATH="$PATH:/out" 24 | ENV AFL_SKIP_CPUFREQ=1 25 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 26 | ENV AFL_TESTCACHE_SIZE=2 27 | 28 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_qemu/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus_qemu 2 | 3 | AFL++ fuzzer instance for binary-only fuzzing with qemu_mode. 4 | The following config active for all benchmarks: 5 | - qemu_mode with: 6 | - entrypoint set to afl_qemu_driver_stdin_input 7 | - persisten mode set to afl_qemu_driver_stdin_input 8 | - cmplog 9 | 10 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 11 | 12 | [builder.Dockerfile](builder.Dockerfile) 13 | [fuzzer.py](fuzzer.py) 14 | [runner.Dockerfile](runner.Dockerfile) 15 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_qemu/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_parallel/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (parallel) 2 | 3 | Run aflplusplus over mutated code with parallel. 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_parallel/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_prioritize/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (prioritize) 2 | 3 | Run aflplusplus over mutated code with UM prioritization 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_prioritize/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_prioritize_75/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (prioritize) 2 | 3 | Run aflplusplus over mutated code with UM prioritization 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_prioritize_75/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_random/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (random) 2 | 3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample 4 | list of generated mutants. 5 | 6 | NOTE: This only works with C or C++ benchmarks. 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_random/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_random_75/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (random) 2 | 3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample 4 | list of generated mutants. 5 | 6 | NOTE: This only works with C or C++ benchmarks. 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/aflplusplus_um_random_75/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_default/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_no_favs/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_wrs/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_wrs_rf/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_wrs_rf_rp/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflpp_random_wrs_rp/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/aflsmart/README.md: -------------------------------------------------------------------------------- 1 | # Supported benchmarks 2 | 3 | [AFLSmart](https://github.com/aflsmart/aflsmart) is a structure-aware greybox-fuzzer and it is designed to work best for programs taking chunk-based file formats (e.g., JPEG, PNG and many others) as inputs. To fully enable its structure-aware mode, AFLSmart requires input models (e.g., grammar). So if you evaluate AFLSmart on FuzzBench, please focus on the results for the following benchmarks. We keep trying to include more input models so that more benchmarks will be supported. 4 | 5 | 1. libpng-1.2.56 6 | 7 | 2. libjpeg-turbo-07-2017 8 | 9 | 3. libpcap_fuzz_both 10 | 11 | 4. freetype2-2017 12 | 13 | 5. vorbis-2017-12-11 14 | 15 | 6. bloaty_fuzz_target 16 | 17 | Since the experiment summary diagram of the default FuzzBench report is automatically generated based on the results of all benchmarks, many of them have not been supported by AFLSmart, the ranking of AFLSmart in that diagram may not be correct. 18 | 19 | -------------------------------------------------------------------------------- /fuzzers/aflsmart/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt-get update -y && \ 18 | DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \ 19 | apt-get install -y \ 20 | mono-complete \ 21 | tzdata 22 | -------------------------------------------------------------------------------- /fuzzers/aflsmart_plusplus/README.md: -------------------------------------------------------------------------------- 1 | [AFLSmart++](https://github.com/thuanpv/aflsmart) is an extension of AFLSmart. Like AFLSmart, it is a structure-aware greybox-fuzzer and it is designed to work best for programs taking chunk-based file formats (e.g., JPEG, PNG and many others) as inputs. 2 | 3 | -------------------------------------------------------------------------------- /fuzzers/aflsmart_plusplus/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt-get update -y && \ 18 | DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \ 19 | apt-get install -y \ 20 | mono-complete \ 21 | tzdata 22 | -------------------------------------------------------------------------------- /fuzzers/centipede/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/centipede_function_filter/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/oss-fuzz-base/base-clang@sha256:30706816922bf9c141b15ff4a5a44af8c0ec5700d4b46e0572029c15e495d45b AS base-clang 16 | FROM gcr.io/fuzzbench/base-image 17 | 18 | RUN apt-get update && apt-get install -y wget && \ 19 | wget https://storage.googleapis.com/oss-fuzz-introspector-testing/focus_map.yaml && \ 20 | apt-get remove --purge -y wget 21 | 22 | COPY --from=base-clang /usr/local/bin/llvm-symbolizer /usr/local/bin/ -------------------------------------------------------------------------------- /fuzzers/coverage/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for clang source-based coverage builds.""" 15 | 16 | import os 17 | 18 | from fuzzers import utils 19 | 20 | 21 | def build(): 22 | """Build benchmark.""" 23 | cflags = [ 24 | '-fprofile-instr-generate', '-fcoverage-mapping', '-gline-tables-only' 25 | ] 26 | utils.append_flags('CFLAGS', cflags) 27 | utils.append_flags('CXXFLAGS', cflags) 28 | 29 | os.environ['CC'] = 'clang' 30 | os.environ['CXX'] = 'clang++' 31 | os.environ['FUZZER_LIB'] = '/usr/lib/libFuzzer.a' 32 | 33 | utils.build_benchmark() 34 | -------------------------------------------------------------------------------- /fuzzers/darwin/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/eclipser_aflplusplus/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus + eclipser 2.0 2 | 3 | AFL++ fuzzer instance that uses Eclipser 2.0 4 | - PCGUARD instrumentation 5 | - dict2file feature 6 | - "fast" power schedule 7 | - persistent mode + shared memory test cases 8 | 9 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 10 | Repository: [https://github.com/SoftSec-KAIST/Eclipser](https://github.com/SoftSec-KAIST/Eclipser) 11 | 12 | [builder.Dockerfile](builder.Dockerfile) 13 | [fuzzer.py](fuzzer.py) 14 | [runner.Dockerfile](runner.Dockerfile) 15 | -------------------------------------------------------------------------------- /fuzzers/ecofuzz/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for EcoFuzz fuzzer.""" 15 | 16 | from fuzzers.afl import fuzzer as afl_fuzzer 17 | 18 | 19 | def build(): 20 | """Build benchmark.""" 21 | afl_fuzzer.build() 22 | 23 | 24 | def fuzz(input_corpus, output_corpus, target_binary): 25 | """Run fuzzer.""" 26 | afl_fuzzer.prepare_fuzz_environment(input_corpus) 27 | 28 | # Write AFL's output to /dev/null to avoid filling up disk by writing too 29 | # much to log file. This is a problem in general with AFLFast but 30 | # particularly with the lcms benchmark. 31 | afl_fuzzer.run_afl_fuzz(input_corpus, 32 | output_corpus, 33 | target_binary, 34 | hide_output=True) 35 | -------------------------------------------------------------------------------- /fuzzers/ecofuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/fafuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/fairfuzz/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for FairFuzz fuzzer.""" 15 | 16 | from fuzzers.afl import fuzzer as afl_fuzzer 17 | 18 | 19 | def build(): 20 | """Build benchmark.""" 21 | afl_fuzzer.build() 22 | 23 | 24 | def fuzz(input_corpus, output_corpus, target_binary): 25 | """Run fuzzer.""" 26 | afl_fuzzer.fuzz(input_corpus, output_corpus, target_binary) 27 | -------------------------------------------------------------------------------- /fuzzers/fairfuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/fuzzolic_aflplusplus_fuzzy/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus + fuzzolic fuzzy solver 2 | 3 | Simple AFL++ fuzzer instance together with fuzzolic fuzzy solver 4 | 5 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 6 | Repository: [https://github.com/season-lab/fuzzolic](https://github.com/season-lab/fuzzolic) 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/fuzzolic_aflplusplus_z3/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus + fuzzolic z3 2 | 3 | Simple AFL++ fuzzer instance together with fuzzolic z3 4 | 5 | Repository: [https://github.com/AFLplusplus/AFLplusplus/](https://github.com/AFLplusplus/AFLplusplus/) 6 | Repository: [https://github.com/season-lab/fuzzolic](https://github.com/season-lab/fuzzolic) 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/glibfuzzer/builder.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ARG parent_image 16 | FROM $parent_image 17 | 18 | #RUN git clone https://github.com/llvm/llvm-project.git /llvm-project && \ 19 | #RUN git clone https://github.com/gtt1995/libfuzzer-adaptive-group.git&& \ 20 | RUN git clone https://github.com/gtt1995/libfuzzer-cmab-latest.git && \ 21 | cd libfuzzer-cmab-latest && \ 22 | # git checkout 5cda4dc7b4d28fcd11307d4234c513ff779a1c6f && \ 23 | # cd compiler-rt/lib/fuzzer && \ 24 | (for f in *.cpp; do \ 25 | clang++ -stdlib=libc++ -fPIC -O2 -std=c++11 $f -c & \ 26 | done && wait) && \ 27 | ar r /usr/lib/glibFuzzer.a *.o 28 | -------------------------------------------------------------------------------- /fuzzers/glibfuzzer/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/gramatron/fuzzer.yaml: -------------------------------------------------------------------------------- 1 | allowed_benchmarks: 2 | - quickjs_eval-2020-01-05 3 | - php_php-fuzz-execute 4 | - mruby_mruby_fuzzer_8c8bbd 5 | -------------------------------------------------------------------------------- /fuzzers/gramatron/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/grimoire/fuzzer.yaml: -------------------------------------------------------------------------------- 1 | allowed_benchmarks: 2 | - quickjs_eval-2020-01-05 3 | - php_php-fuzz-execute 4 | - mruby_mruby_fuzzer_8c8bbd 5 | -------------------------------------------------------------------------------- /fuzzers/grimoire/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/hastefuzz/description.md: -------------------------------------------------------------------------------- 1 | # hastefuzz 2 | 3 | AFL++ fuzzer instance that has the following config active for all benchmarks: 4 | - PCGUARD instrumentation 5 | - cmplog feature 6 | - dict2file feature 7 | - "fast" power schedule 8 | - persistent mode + shared memory test cases 9 | - haste mode 10 | 11 | Repository: [https://github.com/AAArdu/hastefuzz](https://github.com/AAArdu/hastefuzz) 12 | 13 | [builder.Dockerfile](builder.Dockerfile) 14 | [fuzzer.py](fuzzer.py) 15 | [runner.Dockerfile](runner.Dockerfile) 16 | -------------------------------------------------------------------------------- /fuzzers/hastefuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # This makes interactive docker runs painless: 18 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 19 | #ENV AFL_MAP_SIZE=2621440 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_SKIP_CPUFREQ=1 22 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 23 | ENV AFL_TESTCACHE_SIZE=2 24 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_qemu/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_parallel/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (parallel) 2 | 3 | Run aflplusplus over mutated code in parallel. 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_parallel/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_prioritize/description.md: -------------------------------------------------------------------------------- 1 | # honggfuzz UM (prioritize) 2 | 3 | Run honggfuzz over mutated code with UM prioritization 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_prioritize/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_prioritize_75/description.md: -------------------------------------------------------------------------------- 1 | # honggfuzz UM (prioritize) 2 | 3 | Run honggfuzz over mutated code with UM prioritization 4 | 5 | NOTE: This only works with C or C++ benchmarks. 6 | 7 | [builder.Dockerfile](builder.Dockerfile) 8 | [fuzzer.py](fuzzer.py) 9 | [runner.Dockerfile](runner.Dockerfile) 10 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_prioritize_75/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_random/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (random) 2 | 3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample 4 | list of generated mutants. 5 | 6 | NOTE: This only works with C or C++ benchmarks. 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_random/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_random_75/description.md: -------------------------------------------------------------------------------- 1 | # aflplusplus UM (random) 2 | 3 | Run aflplusplus over mutated code without UM prioritization. Randomly sample 4 | list of generated mutants. 5 | 6 | NOTE: This only works with C or C++ benchmarks. 7 | 8 | [builder.Dockerfile](builder.Dockerfile) 9 | [fuzzer.py](fuzzer.py) 10 | [runner.Dockerfile](runner.Dockerfile) 11 | -------------------------------------------------------------------------------- /fuzzers/honggfuzz_um_random_75/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | # honggfuzz requires libfd and libunwid 18 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 19 | -------------------------------------------------------------------------------- /fuzzers/klee/klee_mock.c: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | void klee_make_symbolic(void *addr, size_t len, char const* name) { 17 | // do nothing 18 | abort(); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /fuzzers/klee/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt-get update -y && \ 18 | apt-get install -y \ 19 | google-perftools \ 20 | llvm-6.0 llvm-6.0-dev llvm-6.0-tools 21 | 22 | RUN apt-get install -y clang-6.0 vim less 23 | RUN pip3 install psutil==5.7.2 24 | -------------------------------------------------------------------------------- /fuzzers/lafintel/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/learnperffuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image -------------------------------------------------------------------------------- /fuzzers/libafl/description.md: -------------------------------------------------------------------------------- 1 | # libafl 2 | 3 | libafl fuzzer instance 4 | - cmplog feature 5 | - persistent mode 6 | 7 | Repository: [https://github.com/AFLplusplus/libafl/](https://github.com/AFLplusplus/libafl/) 8 | 9 | [builder.Dockerfile](builder.Dockerfile) 10 | [fuzzer.py](fuzzer.py) 11 | [runner.Dockerfile](runner.Dockerfile) 12 | -------------------------------------------------------------------------------- /fuzzers/libafl/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt install libjemalloc2 18 | 19 | # This makes interactive docker runs painless: 20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 21 | #ENV AFL_MAP_SIZE=2621440 22 | ENV PATH="$PATH:/out" 23 | ENV AFL_SKIP_CPUFREQ=1 24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 25 | ENV AFL_TESTCACHE_SIZE=2 26 | -------------------------------------------------------------------------------- /fuzzers/libafl_libfuzzer/description.md: -------------------------------------------------------------------------------- 1 | # libafl_libfuzzer 2 | 3 | `libafl_libfuzzer` is a libfuzzer shim which attempts to replicate as many of the features of libfuzzer as possible 4 | without utilising any customisation from the compiler, making it compatible with all libfuzzer targets while also using 5 | all the advanced features of libafl. 6 | 7 | Repository: [LibAFL/libfuzzer](https://github.com/AFLplusplus/LibAFL/tree/libfuzzer) 8 | 9 | [builder.Dockerfile](builder.Dockerfile) 10 | [fuzzer.py](fuzzer.py) 11 | [runner.Dockerfile](runner.Dockerfile) 12 | -------------------------------------------------------------------------------- /fuzzers/libafl_libfuzzer/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/libfuzzer/builder.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ARG parent_image 16 | FROM $parent_image 17 | 18 | RUN git clone https://github.com/llvm/llvm-project.git /llvm-project && \ 19 | cd /llvm-project && \ 20 | git checkout 5cda4dc7b4d28fcd11307d4234c513ff779a1c6f && \ 21 | cd compiler-rt/lib/fuzzer && \ 22 | (for f in *.cpp; do \ 23 | clang++ -stdlib=libc++ -fPIC -O2 -std=c++11 $f -c & \ 24 | done && wait) && \ 25 | ar r libFuzzer.a *.o && \ 26 | cp libFuzzer.a /usr/lib 27 | -------------------------------------------------------------------------------- /fuzzers/libfuzzer/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/manul/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | RUN python3 -m pip install psutil 17 | -------------------------------------------------------------------------------- /fuzzers/mopt/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Integration code for MOpt fuzzer.""" 15 | 16 | from fuzzers.afl import fuzzer as afl_fuzzer 17 | 18 | 19 | def build(): 20 | """Build benchmark.""" 21 | afl_fuzzer.build() 22 | 23 | 24 | def fuzz(input_corpus, output_corpus, target_binary): 25 | """Run fuzzer.""" 26 | afl_fuzzer.prepare_fuzz_environment(input_corpus) 27 | 28 | afl_fuzzer.run_afl_fuzz( 29 | input_corpus, 30 | output_corpus, 31 | target_binary, 32 | additional_flags=[ 33 | # Enable Mopt mutator with pacemaker fuzzing mode at first. This 34 | # is also recommended in a short-time scale evaluation. 35 | '-L', 36 | '0', 37 | ]) 38 | -------------------------------------------------------------------------------- /fuzzers/mopt/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/nautilus/fuzzer.yaml: -------------------------------------------------------------------------------- 1 | allowed_benchmarks: 2 | - quickjs_eval-2020-01-05 3 | - php_php-fuzz-execute 4 | - mruby_mruby_fuzzer_8c8bbd 5 | -------------------------------------------------------------------------------- /fuzzers/nautilus/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt update && apt -y install libexpat1-dev zlib1g-dev 18 | 19 | # This makes interactive docker runs painless: 20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 21 | #ENV AFL_MAP_SIZE=2621440 22 | ENV PATH="$PATH:/out" 23 | ENV AFL_SKIP_CPUFREQ=1 24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 25 | ENV AFL_TESTCACHE_SIZE=2 26 | -------------------------------------------------------------------------------- /fuzzers/pythia_bb/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/pythia_effect_bb/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/symcc_afl/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 18 | -------------------------------------------------------------------------------- /fuzzers/symcc_afl_single/fuzzer.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | ''' Uses the SymCC-AFL hybrid from SymCC, although this only 15 | launches a single AFL instance rather than two. ''' 16 | 17 | from fuzzers.symcc_afl import fuzzer as symcc_afl_fuzzer 18 | 19 | 20 | def build(): 21 | """ Build an AFL version and SymCC version of the benchmark """ 22 | symcc_afl_fuzzer.build() 23 | 24 | 25 | def fuzz(input_corpus, output_corpus, target_binary): 26 | """ Launch a SymCC with a single AFL instance. """ 27 | symcc_afl_fuzzer.fuzz(input_corpus, output_corpus, target_binary, True) 28 | -------------------------------------------------------------------------------- /fuzzers/symcc_afl_single/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 18 | -------------------------------------------------------------------------------- /fuzzers/symcc_aflplusplus/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 18 | -------------------------------------------------------------------------------- /fuzzers/symcc_aflplusplus_single/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 18 | -------------------------------------------------------------------------------- /fuzzers/symsan/bz2.abilist: -------------------------------------------------------------------------------- 1 | fun:BZ2_blockSort=uninstrumented 2 | fun:BZ2_bsInitWrite=uninstrumented 3 | fun:BZ2_bzBuffToBuffCompress=uninstrumented 4 | fun:BZ2_bzBuffToBuffDecompress=uninstrumented 5 | fun:BZ2_bzCompress=uninstrumented 6 | fun:BZ2_bzCompressEnd=uninstrumented 7 | fun:BZ2_bzCompressInit=uninstrumented 8 | fun:BZ2_bzDecompress=uninstrumented 9 | fun:BZ2_bzDecompressEnd=uninstrumented 10 | fun:BZ2_bzDecompressInit=uninstrumented 11 | fun:BZ2_bzRead=uninstrumented 12 | fun:BZ2_bzReadClose=uninstrumented 13 | fun:BZ2_bzReadGetUnused=uninstrumented 14 | fun:BZ2_bzReadOpen=uninstrumented 15 | fun:BZ2_bzWrite=uninstrumented 16 | fun:BZ2_bzWriteClose=uninstrumented 17 | fun:BZ2_bzWriteClose64=uninstrumented 18 | fun:BZ2_bzWriteOpen=uninstrumented 19 | fun:BZ2_bz__AssertH__fail=uninstrumented 20 | fun:BZ2_bzclose=uninstrumented 21 | fun:BZ2_bzdopen=uninstrumented 22 | fun:BZ2_bzerror=uninstrumented 23 | fun:BZ2_bzflush=uninstrumented 24 | fun:BZ2_bzlibVersion=uninstrumented 25 | fun:BZ2_bzopen=uninstrumented 26 | fun:BZ2_bzread=uninstrumented 27 | fun:BZ2_bzwrite=uninstrumented 28 | fun:BZ2_compressBlock=uninstrumented 29 | fun:BZ2_decompress=uninstrumented 30 | fun:BZ2_hbAssignCodes=uninstrumented 31 | fun:BZ2_hbCreateDecodeTables=uninstrumented 32 | fun:BZ2_hbMakeCodeLengths=uninstrumented 33 | fun:BZ2_indexIntoF=uninstrumented 34 | -------------------------------------------------------------------------------- /fuzzers/symsan/fres.sh: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | #!/bin/bash 15 | RUST_LOG=info /out/fastgen --sync_afl -i - -o /out/corpus -t $1 -- $2 @@ 16 | -------------------------------------------------------------------------------- /fuzzers/symsan/fuz.sh: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); 2 | # you may not use this file except in compliance with the License. 3 | # You may obtain a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, 9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | # See the License for the specific language governing permissions and 11 | # limitations under the License. 12 | #!/bin/bash 13 | RUST_LOG=info /out/fastgen --sync_afl -i /out/seeds -o /out/corpus -t $1 -- $2 @@ 14 | -------------------------------------------------------------------------------- /fuzzers/token_level/fuzzer.yaml: -------------------------------------------------------------------------------- 1 | allowed_benchmarks: 2 | - quickjs_eval-2020-01-05 3 | - php_php-fuzz-execute 4 | - mruby_mruby_fuzzer_8c8bbd 5 | -------------------------------------------------------------------------------- /fuzzers/token_level/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt update && apt -y install libexpat1-dev zlib1g-dev 18 | 19 | # This makes interactive docker runs painless: 20 | ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/out" 21 | #ENV AFL_MAP_SIZE=2621440 22 | ENV PATH="$PATH:/out" 23 | ENV AFL_SKIP_CPUFREQ=1 24 | ENV AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 25 | ENV AFL_TESTCACHE_SIZE=2 26 | -------------------------------------------------------------------------------- /fuzzers/tortoisefuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /fuzzers/weizz_qemu/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | 17 | RUN apt-get update -y && apt-get install -y libbfd-dev libunwind-dev 18 | 19 | ENV LD_LIBRARY_PATH /out 20 | ENV PATH="$PATH:/out" 21 | ENV AFL_MAP_SIZE=1048576 22 | -------------------------------------------------------------------------------- /fuzzers/wingfuzz/builder.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ARG parent_image 16 | FROM $parent_image 17 | 18 | RUN git clone https://github.com/WingTecherTHU/wingfuzz 19 | RUN cd wingfuzz && git checkout 6ef3281f145fa1839df0f46c38b348ec9d93b0e2 && \ 20 | ./build.sh && cd instrument && ./build.sh && clang -c WeakSym.c && \ 21 | cp ../libFuzzer.a /libWingfuzz.a && cp WeakSym.o / && cp LoadCmpTracer.so / 22 | -------------------------------------------------------------------------------- /fuzzers/wingfuzz/runner.Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2020 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM gcr.io/fuzzbench/base-image 16 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | norecursedirs = docs/_site/* docs/vendor/* third_party/* .venv/* 3 | 4 | markers = 5 | slow: marks tests as slow (deselect with '-m "not slow"') -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | alembic==1.8.1 2 | google-api-python-client==2.64.0 3 | google-auth==2.12.0 4 | google-cloud-error-reporting==1.6.3 5 | google-cloud-logging==3.1.2 6 | google-cloud-secret-manager==2.12.6 7 | clusterfuzz==2.6.0 8 | Jinja2==3.1.2 9 | numpy==1.23.4 10 | MarkupSafe==2.1.1 11 | Orange3==3.33.0 12 | pandas==1.4.4 13 | psutil==5.9.2 14 | psycopg2-binary==2.9.4 15 | pyfakefs==5.0.0 16 | pytest==7.1.3 17 | python-dateutil==2.8.2 18 | pytz==2020.1 19 | PyYAML==6.0 20 | redis==4.3.4 21 | rq==1.11.1 22 | scikit-posthocs==0.7.0 23 | scipy==1.9.2 24 | seaborn==0.13.2 25 | sqlalchemy==1.4.41 26 | protobuf==3.20.3 27 | 28 | # Needed for development. 29 | pylint==2.15.4 30 | pytype==2022.10.13 31 | yapf==0.32.0 32 | -------------------------------------------------------------------------------- /service/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | ################################################################################ 16 | 17 | FROM gcr.io/cloud-builders/gcloud 18 | 19 | RUN apt-get update && apt-get install python3-pip -y 20 | 21 | # Do this expensive step before the cache is destroyed. 22 | RUN pip install pip --upgrade 23 | COPY ./requirements.txt /tmp/requirements.txt 24 | RUN pip install -r /tmp/requirements.txt 25 | RUN pip install PyGithub==1.51 26 | 27 | ENV FUZZBENCH_DIR /opt/fuzzbench 28 | COPY . $FUZZBENCH_DIR 29 | 30 | WORKDIR $FUZZBENCH_DIR 31 | ENV PYTHONPATH=$FUZZBENCH_DIR 32 | ENV FORCE_LOCAL=1 33 | ENTRYPOINT ["python3", "/opt/fuzzbench/service/gcbrun_experiment.py"] -------------------------------------------------------------------------------- /service/core-fuzzers.yaml: -------------------------------------------------------------------------------- 1 | # Core fuzzers used for benchmarking (excludes variants). 2 | # These need to be sorted alphabetical. 3 | fuzzers: 4 | - afl 5 | - aflfast 6 | - aflplusplus 7 | - aflsmart 8 | - centipede 9 | - eclipser 10 | - fairfuzz 11 | - honggfuzz 12 | - libafl 13 | - libfuzzer 14 | - mopt 15 | # - klee # To be supported later. 16 | # - symcc_aflplusplus # To be supported later. 17 | -------------------------------------------------------------------------------- /service/experiment-config.yaml: -------------------------------------------------------------------------------- 1 | # This is the experiment config file used for the fuzzbench service. 2 | # Unless you are a fuzzbench maintainer running this service, this 3 | # will not work with your setup. 4 | 5 | trials: 20 6 | max_total_time: 82800 # 23 hours, the default time for preemptible experiments. 7 | cloud_project: fuzzbench 8 | docker_registry: gcr.io/fuzzbench 9 | cloud_compute_zone: us-central1-c 10 | experiment_filestore: gs://fuzzbench-data 11 | report_filestore: gs://www.fuzzbench.com/reports 12 | cloud_sql_instance_connection_name: "fuzzbench:us-central1:postgres-experiment-db=tcp:5432" 13 | worker_pool_name: "projects/fuzzbench/locations/us-central1/workerPools/buildpool-e2-std-32" # Mem 128 GB 14 | preemptible_runners: true 15 | 16 | # This experiment should generate a report that is combined with other public 17 | # "production" experiments. 18 | merge_with_nonprivate: true 19 | 20 | # This experiment should be merged with other reports in later experiments. 21 | private: false 22 | -------------------------------------------------------------------------------- /service/run_experiment_cloudbuild.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: 'gcr.io/cloud-builders/docker' 3 | args: 4 | - build 5 | - -t 6 | - gcr.io/fuzzbench/experiment-runner 7 | - --build-arg 8 | - BUILDKIT_INLINE_CACHE=1 9 | - --cache-from 10 | - gcr.io/fuzzbench/experiment-runner 11 | - -f 12 | - service/Dockerfile 13 | - . 14 | env: 15 | - 'DOCKER_BUILDKIT=1' 16 | - name: 'gcr.io/fuzzbench/experiment-runner' 17 | args: [] 18 | env: 19 | - 'PULL_REQUEST_NUMBER=${_PR_NUMBER}' 20 | secretEnv: 21 | - 'POSTGRES_PASSWORD' 22 | timeout: 1800s # 30 minutes 23 | timeout: 1800s 24 | options: 25 | logging: CLOUD_LOGGING_ONLY 26 | availableSecrets: 27 | secretManager: 28 | - versionName: projects/fuzzbench/secrets/POSTGRES_PASSWORD/versions/1 29 | env: 'POSTGRES_PASSWORD' 30 | -------------------------------------------------------------------------------- /test_libs/test_data/afl_fuzzer_stats: -------------------------------------------------------------------------------- 1 | start_time : 1602261205 2 | last_update : 1602261205 3 | fuzzer_pid : 2503912 4 | cycles_done : 0 5 | execs_done : 24 6 | execs_per_sec : 1846.15 7 | paths_total : 3 8 | paths_favored : 1 9 | paths_found : 0 10 | paths_imported : 0 11 | max_depth : 1 12 | cur_path : 0 13 | pending_favs : 1 14 | pending_total : 3 15 | variable_paths : 0 16 | stability : 100.00% 17 | bitmap_cvg : 0.00% 18 | unique_crashes : 0 19 | unique_hangs : 0 20 | last_path : 0 21 | last_crash : 0 22 | last_hang : 0 23 | execs_since_crash : 24 24 | exec_timeout : 20 25 | afl_banner : test-instr 26 | afl_version : 2.52b 27 | target_mode : default 28 | command_line : ./afl-fuzz -i /tmp/i -o /tmp/o ./test-instr 29 | --------------------------------------------------------------------------------