fuzzbench icon indicating copy to clipboard operation
fuzzbench copied to clipboard

Adding muttfuzz and requesting an experiment

Open kjain14 opened this issue 1 year ago • 19 comments

Adding MuttFuzz (a binary fuzzing alternative to our "First, Fuzz the Mutants" paper). This will likely integrate better with fuzzbench and thus work on experiments, as we are mutating binaries rather than source code.

kjain14 avatar Apr 13 '24 12:04 kjain14

Hi, @kjain14, long time no see! Thanks for updating the experiment request file.

We have changed our way of running experiments, hope this suits you:

  1. Would you mind making a trivial modification to service/gcbrun_experiment.py? This will allow me to launch experiments in this PR before merging. Here is an example to add a dummy comment, thanks!

  2. Could you please write your experiment request in this format? You can swap the --experiment-name and --fuzzers parameters with your values. For example, in your case, the request command this time is

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-04-23-aflpp-muttfuzz --fuzzers aflplusplus_muttfuzz
  1. You no longer have to edit service/experiment-requests.yaml in the future : )

DonggeLiu avatar Apr 22 '24 23:04 DonggeLiu

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-04-23-aflpp-muttfuzz --fuzzers aflplusplus_muttfuzz

DonggeLiu avatar Apr 23 '24 00:04 DonggeLiu

Experiment 2024-04-23-aflpp-muttfuzz data and results will be available later at: The experiment data. The experiment report.

DonggeLiu avatar Apr 23 '24 01:04 DonggeLiu

We accidentally only ran muttfuzz, we also want to compare against aflplusplus

kjain14 avatar Apr 23 '24 15:04 kjain14

Hi Dongge,

I added another comment for another experiment. Let me know if there is anything else I need to do (mainly we need to compare against aflplusplus).

Thanks, Kush

On Mon, Apr 22, 2024, 9:14 PM Dongge Liu @.***> wrote:

Experiment 2024-04-23-aflpp-muttfuzz data and results will be available later at: The experiment data https://storage.googleapis.com/fuzzbench-data/index.html?prefix=2024-04-23-aflpp-muttfuzz/ . The experiment report https://storage.googleapis.com/www.fuzzbench.com/reports/2024-04-23-aflpp-muttfuzz/index.html .

— Reply to this email directly, view it on GitHub https://github.com/google/fuzzbench/pull/1967#issuecomment-2071218412, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACEOTTIU7PEALLX5OGJ2VZTY6WYYNAVCNFSM6AAAAABGFNJK6OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZRGIYTQNBRGI . You are receiving this because you were mentioned.Message ID: @.***>

kjain14 avatar Apr 23 '24 15:04 kjain14

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-04-23-full-muttfuzz --fuzzers aflplusplus_muttfuzz aflplusplus aflsmart_muttfuzz aflsmart libfuzzer libfuzzer_muttfuzz libafl libafl_muttfuzz honggfuzz honggfuzz_muttfuzz

kjain14 avatar Apr 23 '24 21:04 kjain14

Thanks for providing us with the experiment request command, @kjain14!

I noticed that the experiment requires 10 fuzzers, which may overwhelm FuzzBench due to its current bottleneck in the measurement stage. Empirically, it's safer to keep the number under 8. Meanwhile, this config enables FuzzBench to merge fuzzers' results from past experiments into your report when your experiment completes so that we don't have to re-run them in every new experiment. For example, your previous experiment report should have data of other fuzzers (including afl++) once it completes. Here is another example command and its report. The report merges core fuzzers' results from past experiments even though they were not explicitly mentioned in the command.

I will revise the new command below, please let me know if they work for you.

DonggeLiu avatar Apr 23 '24 22:04 DonggeLiu

Thanks! Yes merging them should work!

kjain14 avatar Apr 23 '24 22:04 kjain14

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-04-23-full-muttfuzz --fuzzers aflplusplus_muttfuzz aflsmart_muttfuzz libfuzzer_muttfuzz libafl_muttfuzz honggfuzz_muttfuzz

DonggeLiu avatar Apr 23 '24 22:04 DonggeLiu

The request failed because the fuzzer name is libafl_muttfuzz but its directory name is libafll_muttfuzz (with two ls in afll), is this a typo? Would you like to change it or it's ok to use that name?

DonggeLiu avatar Apr 23 '24 22:04 DonggeLiu

Apologies for the typo, this should be fixed now

kjain14 avatar Apr 24 '24 01:04 kjain14

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-04-24-full-muttfuzz --fuzzers aflplusplus_muttfuzz aflsmart_muttfuzz libfuzzer_muttfuzz libafl_muttfuzz honggfuzz_muttfuzz

DonggeLiu avatar Apr 24 '24 01:04 DonggeLiu

Experiment 2024-04-24-full-muttfuzz data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

DonggeLiu avatar Apr 24 '24 01:04 DonggeLiu

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-05-02-full-muttfuzz --fuzzers aflplusplus_muttfuzz aflsmart_muttfuzz libfuzzer_muttfuzz libafl_muttfuzz honggfuzz_muttfuzz

kjain14 avatar May 02 '24 17:05 kjain14

Hi @kjain14, would you mind if I start this experiment next week?

We were trying to investigate this failure and it would be great if we could avoid starting another large experiment at the meantime.

Thanks!

DonggeLiu avatar May 03 '24 01:05 DonggeLiu

Sure, we can start it next week

kjain14 avatar May 03 '24 01:05 kjain14

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-05-06-full-muttfuzz --fuzzers aflplusplus_muttfuzz aflsmart_muttfuzz libfuzzer_muttfuzz libafl_muttfuzz honggfuzz_muttfuzz

DonggeLiu avatar May 06 '24 00:05 DonggeLiu

Experiment 2024-05-06-full-muttfuzz data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

DonggeLiu avatar May 06 '24 01:05 DonggeLiu

@kjain14 fyi I saw your experiments. if you did not integrate muttfuzz on the same commit as aflplusplus that you fuzzbench is using, you will be comparing apples with oranges because there were significant advances. same if your muttfuzz afl++ commit is newer than the one on fuzzbench. I didnt check your setup. just in case: better add an aflplusplus variant that has the exact same commit id you have based your muttfuzz integration on. comparing against honggfuzz looks good, so I would expect it should also improve afl++.

vanhauser-thc avatar May 18 '24 09:05 vanhauser-thc