From 5bf06ccef219fe572cfdbe737b638f5670469934 Mon Sep 17 00:00:00 2001
From: aflgo <30997585+aflgo@users.noreply.github.com>
Date: Thu, 17 Aug 2017 17:35:01 +0800
Subject: [PATCH] Create Readme.md
---
Readme.md | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 Readme.md
diff --git a/Readme.md b/Readme.md
new file mode 100644
index 00000000..cdf515d3
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,11 @@
+# AFLGo: Directed Greybox Fuzzing
+
+AFLGo is an extension of American Fuzzy Lop (AFL).
+Given a set of target locations (e.g., `folder/file.c:582`), AFLGo generates inputs specifically with the objective to exercise these target locations.
+
+Unlike AFL, AFLGo spends most of its time budget on reaching specific target locations without wasting resources stressing unrelated program components. This is particularly interesting in the context of
+* **patch testing** by setting changed statements as targets. When a critical component is changed, we would like to check whether this introduced any vulnerabilities. AFLGo, a fuzzer that can focus on those changes, has a higher chance of exposing the regression.
+* **static analysis report verification** by setting statements as targets that a static analysis reports as potentially dangerous or vulnerability-inducing. When assessing the security of a program, static analysis tools might identify dangerous locations, such as critical system calls. AFLGo can generate inputs that actually show that this is indeed no false positive.
+* **information flow detection** by setting sensitive sources and sinks as targets. To expose data leakage vulnerabilities, a security researcher would like to generate executions that exercise sensitive sources containing private information and sensitive sinks where data becomes visible to the outside world. A directed fuzzer can be used to generate such executions efficiently.
+* **crash reproduction** by setting method calls in the stack-trace as targets. When in-field crashes are reported, only the stack-trace and some environmental parameters are sent to the in-house development team. To preserve the user's privacy, the specific crashing input is often not available. AFLGo could help the in-house team to swiftly reproduce these crashes.
+