Note!!! Fuzzilli-0.9 is an unsuccessful attempt. It is recommended to start directly with the latest version of Fuzzilli (starting from the “Let’s Fuzz!” section).
System: Ubuntu 20.04 LTS
Environment Configuration
Fuzzilli-0.9
Execute according to the following command and find an error, because libcurl3 and libcurl4 conflict, just remove libcurl3, follow the prompts to continue the installation.
1 2 3 4 5 6 7 8 9 10 11
fr3y@ubuntu:~$ sudo apt --yes install clang libcurl3 libpython2.7 libpython2.7-dev libcurl4 git Reading package lists... Done Building dependency tree Reading state information... Done Package libcurl3 is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: libcurl4:i386 libcurl4
E: Package 'libcurl3' has no installation candidate
Next, an error is reported in this step, so libncurses5 is installed and continues to run, and an error is reported again.
1 2 3 4 5
fr3y@ubuntu:~/fuzzilli-0.9$ swift build -c release -Xlinker='-lrt' swift: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory fr3y@ubuntu:~$ sudo apt install libncurses5 fr3y@ubuntu:~/fuzzilli-0.9$ swift build -c release -Xlinker='-lrt' /usr/share/swift/usr/bin/swift-build: error while loading shared libraries: libicuuc.so.60: cannot open shared object file: No such file or directory
Just install this and make sure clang is installed.
1 2 3
cd ~/Downloads wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu60_60.2-3ubuntu3.2_amd64.deb sudo apt-get install ./libicu60_60.2-3ubuntu3.2_amd64.deb
fr3y@ubuntu:~/v8$ cp /home/fr3y/fuzzilli-0.9/Targets/V8/v8.patch ./ fr3y@ubuntu:~/v8$ gn gen out/fuzzbuild --args='is_debug=false dcheck_always_on=true v8_static_library=true v8_enable_slow_dchecks=true v8_enable_v8_checks=true v8_enable_verify_heap=true v8_enable_verify_csa=true v8_enable_verify_predictable=true sanitizer_coverage_flags="trace-pc-guard" target_cpu="x64"' Done. Made 122 targets from 81 files in 185ms fr3y@ubuntu:~/v8$ ninja -C ./out/fuzzbuild ninja: Entering directory `./out/fuzzbuild' [1711/1711] STAMP obj/gn_all.stamp
Because whether using the old version of fuzzilli, swift or v8, an error will occur eventually. This problem can probably be solved by reinstalling each of them again with the same version, but I will directly use the latest version here.
Fuzzer state: Fuzzing (with MutationEngine) Uptime: 0d 0h 30m 0s Total Samples: 12666 Interesting Samples Found: 1437 Last Interesting Sample: 0d 0h 0m 4s Valid Samples Found: 8959 Corpus Size: 1435 Correctness Rate: 71.00% (overall: 70.73%) Timeout Rate: 1.90% (overall: 1.53%) Crashes Found: 0 Timeouts Hit: 194 Coverage: 7.88% Avg. program size: 48.27 Avg. corpus program size: 11.28 Avg. program execution time: 20ms Connected nodes: 0 Execs / Second: 36.91 Fuzzer Overhead: 18.61% Total Execs: 93155
It is now difficult to discover new vulnerabilities using the default fuzzing approach. Going forward, it will be necessary to adjust the fuzzing strategy, input corpus, mutation rate, code coverage and other factors.