Skip to content

Commit

Permalink
rebuilding site mar 2 gen 2024, 14:35:12, CET
Browse files Browse the repository at this point in the history
  • Loading branch information
andreafioraldi committed Jan 2, 2024
1 parent 4888d45 commit d85d48e
Show file tree
Hide file tree
Showing 124 changed files with 4,997 additions and 944 deletions.
2 changes: 1 addition & 1 deletion AFLplusplus
Submodule AFLplusplus updated 74 files
+1 −1 .custom-format.py
+1 −0 .gitignore
+4 −3 GNUmakefile
+5 −2 GNUmakefile.llvm
+2 −2 README.md
+18 −3 TODO.md
+15 −17 afl-cmin
+50 −36 afl-cmin.bash
+6 −1 afl-persistent-config
+5 −1 afl-system-config
+0 −4 benchmark/COMPARISON
+9 −0 benchmark/COMPARISON.md
+59 −0 benchmark/README.md
+420 −0 benchmark/benchmark-results.jsonl
+1,445 −0 benchmark/benchmark.ipynb
+281 −0 benchmark/benchmark.py
+0 −42 benchmark/benchmark.sh
+53 −0 custom_mutators/examples/custom_post_run.c
+5 −0 custom_mutators/examples/example.py
+30 −3 docs/Changelog.md
+1 −1 docs/INSTALL.md
+4 −0 docs/afl-fuzz_approach.md
+5 −4 docs/custom_mutators.md
+19 −0 docs/env_variables.md
+1 −7 docs/fuzzing_binary-only_targets.md
+4 −1 docs/tutorials.md
+6 −6 frida_mode/src/main.c
+1 −1 frida_mode/src/ranges.c
+13 −1 include/afl-fuzz.h
+26 −11 include/afl-mutations.h
+1 −1 include/config.h
+8 −0 include/envs.h
+1 −0 include/forkserver.h
+15 −15 include/xxhash.h
+7 −0 injections.dic
+48 −0 instrumentation/README.injections.md
+31 −23 instrumentation/SanitizerCoverageLTO.so.cc
+9 −0 instrumentation/SanitizerCoveragePCGUARD.so.cc
+80 −18 instrumentation/afl-compiler-rt.o.c
+6 −2 instrumentation/afl-llvm-common.cc
+30 −16 instrumentation/afl-llvm-dict2file.so.cc
+2 −2 instrumentation/afl-llvm-pass.so.cc
+21 −19 instrumentation/cmplog-instructions-pass.cc
+9 −8 instrumentation/cmplog-routines-pass.cc
+1 −1 instrumentation/cmplog-switches-pass.cc
+16 −14 instrumentation/compare-transform-pass.so.cc
+50 −31 instrumentation/split-compares-pass.so.cc
+1 −1 instrumentation/split-switches-pass.so.cc
+1 −1 nyx_mode/LIBNYX_VERSION
+1 −1 nyx_mode/QEMU-Nyx
+1 −1 nyx_mode/QEMU_NYX_VERSION
+1 −1 nyx_mode/libnyx
+19 −19 qemu_mode/libqasan/dlmalloc.c
+2 −2 qemu_mode/libqasan/malloc.c
+1 −1 qemu_mode/qemuafl
+60 −23 src/afl-cc.c
+25 −2 src/afl-common.c
+10 −5 src/afl-forkserver.c
+13 −1 src/afl-fuzz-bitmap.c
+3 −2 src/afl-fuzz-extras.c
+12 −0 src/afl-fuzz-mutators.c
+17 −15 src/afl-fuzz-one.c
+30 −0 src/afl-fuzz-python.c
+237 −26 src/afl-fuzz-redqueen.c
+18 −1 src/afl-fuzz-run.c
+1 −2 src/afl-fuzz-state.c
+18 −15 src/afl-fuzz-stats.c
+1 −1 src/afl-fuzz-statsd.c
+49 −3 src/afl-fuzz.c
+1 −1 src/afl-ld-lto.c
+1 −1 unicorn_mode/UNICORNAFL_VERSION
+1 −1 unicorn_mode/unicornafl
+18 −1 utils/aflpp_driver/aflpp_driver.c
+3 −3 utils/libtokencap/libtokencap.so.c
2 changes: 1 addition & 1 deletion LibAFL
Submodule LibAFL updated 322 files
4 changes: 2 additions & 2 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ publishDir = "docs"
ogimage = "ogimage.png"
BookMenuBundle = "/menu"
BookLogo = 'aflpp_logo_256x256_w.png'
ReleaseName = "4.08c"
ReleaseURL = "https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.08c"
ReleaseName = "4.09c"
ReleaseURL = "https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.09c"
33 changes: 30 additions & 3 deletions content/docs/Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,54 @@ type: docs
This is the list of all noteworthy changes made in every public
release of the tool. See README.md for the general instruction manual.

### Version ++4.09a (dev)
### Version ++4.10a (dev)
- afl-fuzz:
- default power schedule is now EXPLORE, due a fix in fast schedules
explore is slightly better now.
- fixed minor issues in the mutation engine, thanks to @futhewo for
reporting!
- instrumentation:
- LLVM 18 support, thanks to @devnexen!
- Injection (SQL, LDAP, XSS) feature now available, see
`instrumentation/README.injections.md` how to activate/use/expand.
- compcov/LAF-intel:
- floating point splitting bug fix by @hexcoder
- due a bug in LLVM 17 integer splitting is disabled!
- when splitting floats was selected, integers were always split as well,
fixed to require AFL_LLVM_LAF_SPLIT_COMPARES as it should


### Version ++4.09c (release)
- afl-fuzz:
- fixed the new mutation implementation for two bugs
- added `AFL_FINAL_SYNC` which forces a final fuzzer sync (also for `-F`)
before terminating.
- added AFL_IGNORE_SEED_PROBLEMS to skip over seeds that time out instead
of exiting with an error message
- allow -S/-M naming up to 50 characters (from 24)
- CMPLOG:
- added scale support (-l S)
- skip unhelpful insertions (u8)
- added --version and --help command line parameters
- fixed endless loop when reading malformed dictionaries
- new custom mutator function: post_run - thanks to yangzao!
- afl-whatsup:
- detect instanced that are starting up and show them as such as not dead
- now also shows coverage reached
- option -m shows only very relevant stats
- option -n will not use color in the output
- instrumentation:
- fix for a few string compare transform functions for LAF
- we are instrumenting __cxx internal functions again. this might break
a few targets, please report if so.
- frida_mode:
- fixes support for large map offsets
- support for AFL_FUZZER_LOOPCOUNT for afl.rs and LLVMFuzzerTestOneInput
- afl-cmin/afl-cmin.bash: prevent unneeded file errors
- added new tool afl-addseeds that adds new seeds to a running campaign
- added benchmark/benchmark.sh if you want to see how good your fuzzing
- added benchmark/benchmark.py if you want to see how good your fuzzing
speed is in comparison to other setups.


### Version ++4.08c (release)
- afl-fuzz:
- new mutation engine: mutations that favor discovery more paths are
Expand Down
2 changes: 1 addition & 1 deletion content/docs/INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ You can use the [Dockerfile](https://github.com/AFLplusplus/AFLplusplus/blob/sta
Docker Hub (for x86_64 and arm64):

```shell
docker pull aflplusplus/aflplusplus:
docker pull aflplusplus/aflplusplus:latest
docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus
```

Expand Down
4 changes: 4 additions & 0 deletions content/docs/afl-fuzz_approach.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ instrumentation-guided genetic algorithm. It uses a modified form of edge
coverage to effortlessly pick up subtle, local-scale changes to program control
flow.

Note: If you are interested in a more current up-to-date deep dive how AFL++
works then we commend this blog post:
[https://blog.ritsec.club/posts/afl-under-hood/](https://blog.ritsec.club/posts/afl-under-hood/)

Simplifying a bit, the overall algorithm can be summed up as:

1) Load user-supplied initial test cases into the queue.
Expand Down
9 changes: 5 additions & 4 deletions content/docs/custom_mutators.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,9 @@ def deinit(): # optional for Python

- `queue_get` (optional):

This method determines whether the custom fuzzer should fuzz the current
queue entry or not
This method determines whether AFL++ should fuzz the current
queue entry or not: all defined custom mutators as well as
all AFL++'s mutators.

- `fuzz_count` (optional):

Expand Down Expand Up @@ -203,7 +204,7 @@ def deinit(): # optional for Python
This method can be used if you want to send data to the target yourself,
e.g. via IPC. This replaces some usage of utils/afl_proxy but requires
that you start the target with afl-fuzz.
Example: [https://github.com/AFLplusplus/AFLplusplus/blob/stable/custom_mutators/examples/custom_send.c](https://github.com/AFLplusplus/AFLplusplus/blob/stable/custom_mutators/examples/custom_send.c)
Example: [custom_mutators/examples/custom_send.c](https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/../custom_mutators/examples/custom_send.c)

- `queue_new_entry` (optional):

Expand Down Expand Up @@ -382,4 +383,4 @@ See [example.c](https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/../c
- [bruce30262/libprotobuf-mutator_fuzzing_learning](https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning/tree/master/4_libprotobuf_aflpp_custom_mutator)
- [thebabush/afl-libprotobuf-mutator](https://github.com/thebabush/afl-libprotobuf-mutator)
- [XML Fuzzing@NullCon 2017](https://www.agarri.fr/docs/XML_Fuzzing-NullCon2017-PUBLIC.pdf)
- [A bug detected by AFL + XML-aware mutators](https://bugs.chromium.org/p/chromium/issues/detail?id=930663)
- [A bug detected by AFL + XML-aware mutators](https://bugs.chromium.org/p/chromium/issues/detail?id=930663)
19 changes: 19 additions & 0 deletions content/docs/env_variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ subset of the settings discussed in section 1, with the exception of:
- `TMPDIR` and `AFL_KEEP_ASSEMBLY`, since no temporary assembly files are
created.

- LLVM modes compiling C++ will normally set rpath in the binary if LLVM is
not in a usual location (/usr or /lib). Setting `AFL_LLVM_NO_RPATH=1`
disables this behaviour in case it isn't desired. For example, the compiling
toolchain might be in a custom location, but the target machine has LLVM
runtime libs in the search path.

Then there are a few specific features that are only available in
instrumentation mode:

Expand Down Expand Up @@ -196,6 +202,19 @@ in the specified file.
For more information, see
[instrumentation/README.instrument_list.md](https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/../instrumentation/README.instrument_list.md).

#### INJECTIONS

This feature is able to find simple injection vulnerabilities in insecure
calls to mysql/mariadb/nosql/postgresql/ldap and XSS in libxml2.

- Setting `AFL_LLVM_INJECTIONS_ALL` will enable all injection hooking

- Setting `AFL_LLVM_INJECTIONS_SQL` will enable SQL injection hooking

- Setting `AFL_LLVM_INJECTIONS_LDAP` will enable LDAP injection hooking

- Setting `AFL_LLVM_INJECTIONS_XSS` will enable XSS injection hooking

#### LAF-INTEL

This great feature will split compares into series of single byte comparisons to
Expand Down
8 changes: 1 addition & 7 deletions content/docs/fuzzing_binary-only_targets.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ For more information, see

In FRIDA mode, you can fuzz binary-only targets as easily as with QEMU mode.
FRIDA mode is most of the times slightly faster than QEMU mode. It is also
newer, lacks COMPCOV, and has the advantage that it works on MacOS (both intel
and M1).
newer, and has the advantage that it works on MacOS (both intel and M1).

To build FRIDA mode:

Expand All @@ -119,10 +118,6 @@ The mode is approximately 2-5x slower than compile-time instrumentation, and is
less conducive to parallelization. But for binary-only fuzzing, it gives a huge
speed improvement if it is possible to use.

If you want to fuzz a binary-only library, then you can fuzz it with frida-gum
via frida_mode/. You will have to write a harness to call the target function in
the library, use afl-frida.c as a template.

You can also perform remote fuzzing with frida, e.g., if you want to fuzz on
iPhone or Android devices, for this you can use
[https://github.com/ttdennis/fpicker/](https://github.com/ttdennis/fpicker/) as
Expand Down Expand Up @@ -308,7 +303,6 @@ some are very hard to set up...
* S2E: [https://github.com/S2E](https://github.com/S2E)
* TinyInst:
[https://github.com/googleprojectzero/TinyInst](https://github.com/googleprojectzero/TinyInst)
(Mac/Windows only)
* ... please send me any missing that are good

## Closing words
Expand Down
5 changes: 4 additions & 1 deletion content/docs/tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ training, then we can highly recommend the following:

* [https://github.com/antonio-morales/Fuzzing101](https://github.com/antonio-morales/Fuzzing101)

Here is a good forkflow description (and tutorial) for qemu_mode:
Here is a good workflow description (and tutorial) for qemu_mode:

* [https://airbus-seclab.github.io/AFLplusplus-blogpost/](https://airbus-seclab.github.io/AFLplusplus-blogpost/)

Expand All @@ -47,6 +47,9 @@ structure is), these links have you covered (some are outdated though):
* Superion for AFL++:
[https://github.com/adrian-rt/superion-mutator](https://github.com/adrian-rt/superion-mutator)

For a very in-depth explanation on how AFL++ works check out:
[https://blog.ritsec.club/posts/afl-under-hood/](https://blog.ritsec.club/posts/afl-under-hood/)

## Video Tutorials

* [Install AFL++ Ubuntu](https://www.youtube.com/watch?v=5dCvhkbi3RA)
Expand Down
Binary file added docs/37C3_talk_2023.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions docs/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@



<link rel="stylesheet" href="/book.min.5f6934428064085210d9b92c20af9b09c67cef71f93fa65ebbc5af315512573d.css" integrity="sha256-X2k0QoBkCFIQ2bksIK&#43;bCcZ873H5P6Zeu8WvMVUSVz0=">
<link rel="stylesheet" href="/book.min.690047aa613e46fbad517188866019d4fcac4dbaa45c6085656a6b8af77ba46b.css" integrity="sha256-aQBHqmE&#43;RvutUXGIhmAZ1PysTbqkXGCFZWprivd7pGs=">


<script defer src="/en.search.min.2121dd144f56093f39999e12ac94e2894ddc6fba97b269735113a9d4958a1a25.js" integrity="sha256-ISHdFE9WCT85mZ4SrJTiiU3cb7qXsmlzUROp1JWKGiU="></script>
<script defer src="/en.search.min.68ec47fd1cbb1cf747325b658b3fa46a968dbe271a29a651694735aa6eaf02f3.js" integrity="sha256-aOxH/Ry7HPdHMltliz&#43;kapaNvicaKaZRaUc1qm6vAvM="></script>

<!--
Made with Book Theme
Expand Down
16 changes: 8 additions & 8 deletions docs/building/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@



<link rel="stylesheet" href="/book.min.5f6934428064085210d9b92c20af9b09c67cef71f93fa65ebbc5af315512573d.css" integrity="sha256-X2k0QoBkCFIQ2bksIK&#43;bCcZ873H5P6Zeu8WvMVUSVz0=">
<link rel="stylesheet" href="/book.min.690047aa613e46fbad517188866019d4fcac4dbaa45c6085656a6b8af77ba46b.css" integrity="sha256-aQBHqmE&#43;RvutUXGIhmAZ1PysTbqkXGCFZWprivd7pGs=">


<script defer src="/en.search.min.2121dd144f56093f39999e12ac94e2894ddc6fba97b269735113a9d4958a1a25.js" integrity="sha256-ISHdFE9WCT85mZ4SrJTiiU3cb7qXsmlzUROp1JWKGiU="></script>
<script defer src="/en.search.min.68ec47fd1cbb1cf747325b658b3fa46a968dbe271a29a651694735aa6eaf02f3.js" integrity="sha256-aOxH/Ry7HPdHMltliz&#43;kapaNvicaKaZRaUc1qm6vAvM="></script>

<!--
Made with Book Theme
Expand Down Expand Up @@ -84,7 +84,7 @@ <h2 class="book-brand">
<ul>
<li><strong>Downloads</strong>
<ul>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.08c">Release 4.08c</a>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.09c">Release 4.09c</a>
</li>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases">All releases</a></li>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/archive/master.zip">Current devel</a></li>
Expand Down Expand Up @@ -151,17 +151,17 @@ <h2 class="book-brand">

<article class="markdown"><h1 id="build-and-install-afl">Build and install AFL++</h1>
<p>Download the lastest devel version with:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ git clone https://github.com/AFLplusplus/AFLplusplus
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ git clone https://github.com/AFLplusplus/AFLplusplus
$ cd AFLplusplus
</code></pre></div><p>AFL++ has many build options.
The easiest is to build and install everything:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make distrib
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make distrib
$ sudo make install
</code></pre></div><p>Note that &ldquo;make distrib&rdquo; also builds llvm_mode, qemu_mode, unicorn_mode and
more. If you just want plain afl then do &ldquo;make all&rdquo;, however compiling and
using at least llvm_mode is highly recommended for much better results -
hence in this case</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make source-only
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make source-only
</code></pre></div><p>is what you should choose.</p>
<p>These build options exist:</p>
<ul>
Expand All @@ -177,11 +177,11 @@ <h2 class="book-brand">
</ul>
<p><a href="https://developer.apple.com/library/archive/qa/qa1118/_index.html">Unless you are on Mac OS X</a> you can also build statically linked versions of the
AFL++ binaries by passing the STATIC=1 argument to make:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make all STATIC<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ make all STATIC<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</code></pre></div><p>Note that AFL++ is faster and better the newer the compilers used are.
Hence gcc-9 and especially llvm-9 should be the compilers of choice.
If your distribution does not have them, you can use the Dockerfile:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ docker build -t aflplusplus
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">$ docker build -t aflplusplus
</code></pre></div></article>


Expand Down
10 changes: 4 additions & 6 deletions docs/categories/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@



<link rel="stylesheet" href="/book.min.5f6934428064085210d9b92c20af9b09c67cef71f93fa65ebbc5af315512573d.css" integrity="sha256-X2k0QoBkCFIQ2bksIK&#43;bCcZ873H5P6Zeu8WvMVUSVz0=">
<link rel="stylesheet" href="/book.min.690047aa613e46fbad517188866019d4fcac4dbaa45c6085656a6b8af77ba46b.css" integrity="sha256-aQBHqmE&#43;RvutUXGIhmAZ1PysTbqkXGCFZWprivd7pGs=">


<script defer src="/en.search.min.2121dd144f56093f39999e12ac94e2894ddc6fba97b269735113a9d4958a1a25.js" integrity="sha256-ISHdFE9WCT85mZ4SrJTiiU3cb7qXsmlzUROp1JWKGiU="></script>
<script defer src="/en.search.min.68ec47fd1cbb1cf747325b658b3fa46a968dbe271a29a651694735aa6eaf02f3.js" integrity="sha256-aOxH/Ry7HPdHMltliz&#43;kapaNvicaKaZRaUc1qm6vAvM="></script>

<link rel="alternate" type="application/rss+xml" href="https://aflplus.plus/categories/index.xml" title="AFLplusplus" />
<!--
Expand Down Expand Up @@ -85,7 +85,7 @@ <h2 class="book-brand">
<ul>
<li><strong>Downloads</strong>
<ul>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.08c">Release 4.08c</a>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases/tag/v4.09c">Release 4.09c</a>
</li>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/releases">All releases</a></li>
<li><a href="https://github.com/AFLplusplus/AFLplusplus/archive/master.zip">Current devel</a></li>
Expand Down Expand Up @@ -172,11 +172,9 @@ <h2 class="book-brand">
</header>


<article class="markdown">
<h1>Categories</h1>


</article>


<footer class="book-footer">
Expand Down
8 changes: 2 additions & 6 deletions docs/categories/index.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
<link>https://aflplus.plus/categories/</link>
<description>Recent content in Categories on AFLplusplus</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>

<atom:link href="https://aflplus.plus/categories/index.xml" rel="self" type="application/rss+xml" />


<language>en-us</language><atom:link href="https://aflplus.plus/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>
</rss>
Loading

0 comments on commit d85d48e

Please sign in to comment.