• Stars
    star
    109
  • Rank 317,155 (Top 7 %)
  • Language
    Rust
  • License
    Other
  • Created almost 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AFLTriage

AFLTriage is a tool to triage crashing input files using a debugger. It is designed to be portable and not require any run-time dependencies, besides libc and an external debugger. It supports triaging crashes generated by any program, not just AFL, but recognizes AFL directories specially, hence the name.

Some notable features include:

  • Multiple report formats: text, JSON, and raw debugger JSON
  • Parallel crash triage
  • Crash deduplication
  • Sanitizer report parsing
  • Supports binary targets with or without symbols/debugging information
  • Source code and variables will be annotated in reports for context

Currently AFLTriage only supports GDB and has only been tested on Linux C/C++ targets. Note that AFLTriage does not classify crashes by potential exploitablity. Accurate exploitability classification is very target and scenario specific and is best left to specialized tools and expert analysts.

Usage

Usage of AFLTriage is quite straightforward. You need your inputs to triage, an output directory for reports, and the binary and its arguments to triage.

Example:

$ afltriage -i fuzzing_directory -o reports ./target_binary --option-one @@
AFLTriage v1.0.0

[+] GDB is working (GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 - Python 3.6.9 (default, Jan 26 2021, 15:33:00))
[+] Image triage cmdline: "./target_binary --option-one @@"
[+] Reports will be output to directory "reports"
[+] Triaging AFL directory fuzzing_directory/ (41 files)
[+] Triaging 41 testcases
[+] Using 24 threads to triage
[+] Triaging   [41/41 00:00:02] [####################] CRASH: ASAN detected heap-buffer-overflow in buggy_function after a READ leading to SIGABRT (si_signo=6) / SI_TKILL (si_code=-6)
[+] Triage stats [Crashes: 25 (unique 12), No crash: 16, Errored: 0]

Similar to AFL the @@ is replaced with the path of the file to be triaged. AFLTriage will take care of the rest.

Building and Running

You will need a working Rust build environment. Once you have cargo and rust installed, building and running is simple:

cd afltriage-rs/
cargo run --help

<compilation>

    Finished dev [unoptimized + debuginfo] target(s) in 0.33s
     Running `target/debug/afltriage --help`

<AFLTriage usage>
...

Extended Usage

afltriage 1.0.0
Quickly triage and summarize crashing testcases

USAGE:
    afltriage -i <input>... -o <output> <command>...

OPTIONS:
    -i <input>...
            A list of paths to a testcase, directory of testcases, AFL directory, and/or directory of AFL directories to
            be triaged. Note that this arg takes multiple inputs in a row (e.g. -i input1 input2...) so it cannot be the
            last argument passed to AFLTriage -- this is reserved for the command.
    -o <output>
            The output directory for triage report files. Use '-' to print entire reports to console.

    -t, --timeout <timeout>
            The timeout in milliseconds for each testcase to triage. [default: 60000]

    -j, --jobs <jobs>                                
            How many threads to use during triage.

        --report-formats <report_formats>...
            The triage report output formats. Multiple values allowed: e.g. text,json. [default: text]  [possible
            values: text, json, rawjson]
        --bucket-strategy <bucket_strategy>
            The crash deduplication strategy to use. [default: afltriage]  [possible values: none, afltriage,
            first_frame, first_frame_raw, first_5_frames, function_names, first_function_name]
        --child-output                               
            Include child output in triage reports.

        --child-output-lines <child_output_lines>
            How many lines of program output from the target to include in reports. Use 0 to mean unlimited lines (not
            recommended). [default: 25]
        --stdin                                      
            Provide testcase input to the target via stdin instead of a file.

        --profile-only
            Perform environment checks, describe the inputs to be triaged, and profile the target binary.

        --skip-profile                               
            Skip target profiling before input processing.

        --debug                                      
            Enable low-level debugging output of triage operations.

    -h, --help                                       
            Prints help information

    -V, --version                                    
            Prints version information


ARGS:
    <command>...    
            The binary executable and args to execute. Use '@@' as a placeholder for the path to the input file or
            --stdin. Optionally use -- to delimit the start of the command.

Related Projects

License

AFLTriage is licensed under the BSD 3-clause "New" or "Revised". See LICENSE for more details.

More Repositories

1

aimet

AIMET is a library that provides advanced quantization and compression techniques for trained neural network models.
Python
2,016
star
2

sense

Enhance your application with the ability to see and interact with humans using any RGB camera.
Python
731
star
3

ai-hub-models

The Qualcomm® AI Hub Models are a collection of state-of-the-art machine learning models optimized for performance (latency, memory etc.) and ready to deploy on Qualcomm® devices.
Python
345
star
4

aimet-model-zoo

Python
284
star
5

gunyah-hypervisor

Gunyah is a Type-1 hypervisor designed for strong security, performance and modularity.
C
267
star
6

sample-apps-for-robotics-platforms

C
113
star
7

snapdragon-gsr

GLSL
94
star
8

qidk

C
74
star
9

adreno-gpu-opengl-es-code-sample-framework

This repository contains an OpenGL ES Framework designed to enable developers to get up and running quickly for creating sample content and rapid prototyping. It is designed to be easy to build and have the basic building blocks needed for creating an Android APK with OpenGL ES functionality, input system, as well as other helper utilities for loading resources, etc. This Framework has been extracted and is a subset of the Adreno GPU SDK.
C++
58
star
10

cloud-ai-sdk

Qualcomm Cloud AI SDK (Platform and Apps) enable high performance deep learning inference on Qualcomm Cloud AI platforms delivering high throughput and low latency across Computer Vision, Object Detection, Natural Language Processing and Generative AI models.
Jupyter Notebook
47
star
11

adreno-gpu-vulkan-code-sample-framework

This repository contains a Vulkan Framework designed to enable developers to get up and running quickly for creating sample content and rapid prototyping. It is designed to be easy to build and have the basic building blocks needed for creating an Android APK with Vulkan functionality, input system, as well as other helper utilities for loading resources, etc.
C++
43
star
12

upstream-wifi-fw

39
star
13

efficient-transformers

This library empowers users to seamlessly port pretrained models and checkpoints on the HuggingFace (HF) hub (developed using HF transformers library) into inference-ready formats that run efficiently on Qualcomm Cloud AI 100 accelerators.
Python
33
star
14

qca-sdk-nss-fw

28
star
15

qbox

Qbox
C++
26
star
16

sense-iOS

Enhance your iOS app with the ability to see and interact with humans using the RGB camera.
Swift
20
star
17

toolchain_for_hexagon

Shell
18
star
18

vasp

VASP is a framework to simulate attacks on V2X networks. It works on top of the VEINS simulator.
C++
18
star
19

lid

License Identifier
Python
14
star
20

software-kit-for-qualcomm-cloud-ai-100

Software kit for Qualcomm Cloud AI 100
C++
14
star
21

vdds

Highly-optimized intra-process PubSub library with DDS-like interface
C++
13
star
22

gunyah-resource-manager

A Root VM supporting virtualization with the Gunyah Hypervisor.
C
13
star
23

fastrpc

C
13
star
24

ai-engine-direct-helper

C++
12
star
25

comment-filter

A Python library and command-line utility that filters comments from a source file
Python
10
star
26

gunyah-c-runtime

A small C runtime for bare-metal VMs on the Gunyah Hypervisor.
C
10
star
27

software-kit-for-qualcomm-cloud-ai-100-cc

Software kit for Qualcomm Cloud AI 100 cc
C++
9
star
28

android-on-snapdragon

Sample code for 3rd party developers working on Android On Snapdragon
Java
8
star
29

iodme

IODME (IO Data Mover Engine) is a library, and some tools, for optimizing typical IO operations that involve copying / moving data between memory and file descriptors.
C++
7
star
30

autopen

Autopen is an open-source toolkit designed to assist security analysts, manufacturers, and various professionals to detect potential vulnerabilities in vehicles.
Python
7
star
31

qccsdk-qcc711

C
7
star
32

license-text-normalizer

License Text Normalizer
Python
6
star
33

startupkits

Platform Documentation - a collection of documentations (user guides) for startup-kits published on QDN (https://developer.qualcomm.com/hardware/startup-kits)
6
star
34

gunyah-support-scripts

Shell
6
star
35

license-text-normalizer-js

License Text Normalizer (JavaScript)
TypeScript
5
star
36

quic.github.io

Landing page for QuIC GitHub
SCSS
4
star
37

aimet-pages

AIMET GitHub pages documentation
HTML
4
star
38

musl

musl libc fork for Hexagon support
C
4
star
39

bstruct-mininet

Python
4
star
40

snapdragon-game-plugins-for-unreal-engine

4
star
41

lockers

The lockers package contains various locking mechanism and building blocks.
Shell
4
star
42

sshash

Library and tools for hashing sensitive strings in ELF libraries and executables
C++
4
star
43

game-assets-for-adreno-gpu-code-samples

Game assets for Adreno GPU code samples
3
star
44

lsbug

lsbug - A collection of Linux kernel tests for arm64 servers
Python
3
star
45

.github

QuIC GitHub organization action templates and config
C
3
star
46

wifi-commonsys

Java
3
star
47

mink-idl-compiler

Rust
3
star
48

ghe-policy-check

Python
2
star
49

wos-ai-plugins

C++
2
star
50

quic-usb-drivers

C
2
star
51

vsf-service

Python
2
star
52

hexagonMVM

Assembly
2
star
53

tps-location-sdk-android

1
star
54

tps-location-sdk-native

HTML
1
star
55

tps-location-quick-start-android

Java
1
star
56

sample-apps-for-qualcomm-linux

C++
1
star
57

tps-location-quick-start-native

C++
1
star
58

cloud-ai-sdk-pages

1
star