• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    Rust
  • License
    Other
  • Created about 3 years ago
  • Updated almost 3 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,115
star
2

sense

Enhance your application with the ability to see and interact with humans using any RGB camera.
Python
733
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
448
star
4

gunyah-hypervisor

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

aimet-model-zoo

Python
296
star
6

sample-apps-for-robotics-platforms

C
120
star
7

qidk

C
95
star
8

snapdragon-gsr

GLSL
94
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
52
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

42
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
39
star
14

qbox

Qbox
C++
35
star
15

ai-hub-apps

The Qualcomm® AI Hub apps are a collection of state-of-the-art machine learning applications ready to deploy on Qualcomm® devices.
Java
31
star
16

qca-sdk-nss-fw

27
star
17

fastrpc

C
21
star
18

sense-iOS

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

vasp

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

toolchain_for_hexagon

Shell
18
star
21

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

Software kit for Qualcomm Cloud AI 100
C++
16
star
22

gunyah-resource-manager

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

ai-engine-direct-helper

C++
15
star
24

lid

License Identifier
Python
14
star
25

vdds

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

android-on-snapdragon

Sample code for 3rd party developers working on Android On Snapdragon
Java
11
star
27

gunyah-c-runtime

A small C runtime for bare-metal VMs on the Gunyah Hypervisor.
C
11
star
28

comment-filter

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

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

Software kit for Qualcomm Cloud AI 100 cc
C++
10
star
30

gunyah-support-scripts

Shell
9
star
31

wos-ai-plugins

C++
9
star
32

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++
8
star
33

startupkits

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

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
35

qccsdk-qcc711

C
7
star
36

license-text-normalizer

License Text Normalizer
Python
6
star
37

aimet-pages

AIMET GitHub pages documentation
HTML
6
star
38

bstruct-mininet

Python
5
star
39

wifi-commonsys

Java
5
star
40

license-text-normalizer-js

License Text Normalizer (JavaScript)
TypeScript
5
star
41

quic.github.io

Landing page for QuIC GitHub
SCSS
4
star
42

musl

musl libc fork for Hexagon support
C
4
star
43

snapdragon-game-plugins-for-unreal-engine

4
star
44

lockers

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

sshash

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

hexagonMVM

Assembly
4
star
47

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

Game assets for Adreno GPU code samples
3
star
48

lsbug

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

.github

QuIC GitHub organization action templates and config
C
3
star
50

mink-idl-compiler

Rust
3
star
51

ghe-policy-check

Python
2
star
52

quic-usb-drivers

C
2
star
53

sample-apps-for-qualcomm-linux

C++
2
star
54

vsf-service

Python
2
star
55

tps-location-sdk-android

1
star
56

tps-location-sdk-native

HTML
1
star
57

tps-location-quick-start-android

Java
1
star
58

tps-location-quick-start-native

C++
1
star
59

cloud-ai-sdk-pages

1
star
60

sbom-check

Python library and CLI application that check a provided SPDX SBOM for adherence to the official specification SPDX 2.3 specification and for the presence of a configurable set of required field values.
Python
1
star
61

aic-operator

Go
1
star
62

v4l-video-test-app

C++
1
star