Fuzzification helps developers protect the released, binary-only software from attackers who are capable of applying state-of-the-art fuzzing techniques

Overview

About Fuzzification

Fuzzification helps developers protect the released, binary-only software from attackers who are capable of applying state-of-the-art fuzzing techniques. Given a performance budget, this approach aims to hinder the fuzzing process from adversaries as much as possible.

Existing Fuzzification components

  • SpeedBump: Amplifies the slowdown in normal executions by hundreds of times to the fuzzed execution.
  • BranchTrap: Interfers with feedback logic by hiding paths and polluting coverage maps.
  • AntiHybrid: Hinders taint-analysis and symbolic execution.

Envorinment

Tested on Ubuntu 16.04 64bit and LLVM 5.0 (with gold plugin)

Quick start

Authors

Publications

@inproceedings{jung2019fuzzification,
  title={FUZZIFICATION: Anti-Fuzzing Techniques},
  author={Jung, Jinho and Hu, Hong and Solodukhin, David and Pagan, Daniel and Lee, Kyu Hyung and Kim, Taesoo},
  booktitle={28th USENIX Security Symposium (USENIX Security 19)},
  pages={1913--1930},
  year={2019}
}
Comments
  • Add Dockerfile

    Add Dockerfile

    Hello! I used your instructions in install.md to create a Dockerfile that makes it easy to test Fuzzification. I had to add some packages and requirements which are not included in the ubuntu:16.04 image. I used python -m pip freeze as soon as I got it running.

    You can use the dockerfile with

    • docker build -t fuzzification:latest .
    • docker run --rm -it fuzzification:latest

    The dockerfile was successfully tested against your readelf tutorial. Here is the docker.log. The python antifuzz_all.py command creates the expected five versions of readelf.

    ...
    root@2335149a53ec:/home/fuzzification# ls ../antifuzz-tutorial/test/output/readelf/
      readelf_all  readelf_anti  readelf_bump  readelf_coverage  readelf_ori
    
    opened by J03D03 0
  • readelf has high overhead and segfault faults

    readelf has high overhead and segfault faults

    Hi,I use the parameters in the evaluation section of the paper compile readelf. Why does the CPU overhead in SpeedBump reach 80%. In addition, if the program after BranchTrap is used, the segment fault is displayed.

    opened by liupuz 0
  • Segmentation fault for readelf_all

    Segmentation fault for readelf_all

    I have run the following commands to test the functionality. It seems the error handling codes are modified. A segmentation fault will be produced if I feed the readelf_all with a file that does not exist.

    $ gdb ./readelf_all
    pwndbg> run -a ./nofile
    Starting program: /home/xposimon/Desktop/works/fuzzification/antifuzz-tutorial/test/output/readelf/readelf_all -a ./nofile
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    
    Program received signal SIGSEGV, Segmentation fault.
    __GI__IO_fread (buf=0x91e010, size=101, count=1, fp=0x0) at iofread.c:37
    37	iofread.c: No such file or directory.
    
    opened by xposimon 1
  • Antitaint variable names

    Antitaint variable names

    The transformation performed in anti-taint.py will create invalid c code in some cases. This is due to a missing check for the existence of variables named newvar_X. A minimal example of where this will be a problem is:

    int newvar_1 = 1;
    char str1[20];
    strcpy(str1, "hello");
    if(strcmp(str1, "hello")) {
        printf("True");
    } else {
        printf("False");
    }
    

    which will be transformed to:

    int newvar_1 = 1;
    char str1[20];
    strcpy(str1, "hello");
    //////////////// ANTI-TAINT-STR //////////////////
    char newvar_1[strlen(str1)];
    if (strlen(str1) < 30){    
        for (int i=0;i<strlen(str1);i++){
            int ch=0;
            int temp = 0;
            int temp2 = 0;
            for (int j=0; j<8;j++){
                temp = str1[i];
                temp2 = temp & (1<<j);
                if (temp2 !=0){
                    ch |= 1<<j;
                }
            }
            newvar_1[i] = ch;
        }
    }
    else{    
        strncpy(newvar_1, str1, strlen(str1));
    }
    //////////////////////////////////////////////////
       if(strcmp(newvar_1, "hello")) {
          printf("True");
       } else {
          printf("False");
       }
    

    where newvar_1 is already in use.

    Further i would like to ask you where you apply the crc checksum replacements of the form:

    // original code: if (value == 12345)
    if (CRC_LOOP(value) == OUTPUT_CRC) { ... }
    

    that you write about in your paper.

    opened by sevenmaster 2
  • Stuck in installation “make -j 4”

    Stuck in installation “make -j 4”

    My system is Virtual Box Ubuntu 16.04, installed all the dependencies, but when use this command: $ make -j 4 It always said there's no file "plugin-api.h" in the directory. Actually, I tried to go to the folder, the file is in that folder, but when installed, the error message always show up.

    opened by jiahuili430 1
  • Cannot compile tutorial's *_bump due to lack of compile command line

    Cannot compile tutorial's *_bump due to lack of compile command line

    As you see, the antifuzz-tutorial contains a compile tutorial of binutils-2.23 , the binary readelf,objdump,objcpy,nm-new has the source code -> ir code command line , e.g.

    COMMAND["objdump.o"] = 'afl-clang-fast -DHAVE_CONFIG_H -I. -I. -I. -I../bfd -I./../bfd -I./../include -DLOCALEDIR="\\"/usr/local/share/locale\\"" -Dbin_dummy_emulation=bin_vanilla_emulation -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -O0 -flto -std=c11 -lpthread -MT objdump.o -MD -MP -MF .deps/objdump.Tpo -c -o objdump.o -DOBJDUMP_PRIVATE_VECTORS="" ./{SRC} 2> /tmp/makeout'

    but if I want to compile the binary with speedbump, it will lead to :(See antifuzz-tutorial/temp/binutils/build-objdump.sh, this is generated by src/compile.py)

    elif [ "$3" == "slow" ]
      then
        #afl-clang-fast -DHAVE_CONFIG_H -I.  -I. -I. -I../bfd -I./../bfd -I./../include -DLOCALEDIR="\"/usr/local/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -O0 -flto -std=c11 -lpthread -MT objdump.o -MD -MP -MF .deps/objdump.Tpo -c -o objdump.o -DOBJDUMP_PRIVATE_VECTORS="" ./objdump.c  1> /dev/null 2> /tmp/makeout
        cp /home/lawyer61/AIFuzz/fuzzification/src/llvm_pass/bump/delaysrc/delay_$2.o ./delay.o
        /bin/bash ./libtool --tag=CC   --mode=link afl-clang-fast -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -O0 -flto -std=c11 -lpthread  -flto  -o $1 delay.o huge_dummy.o objdump_bump.o dwarf_bump.o prdbg_bump.o rddbg_bump.o debug_bump.o stabs_bump.o ieee_bump.o rdcoff_bump.o bucomm_bump.o version_bump.o filemode_bump.o elfcomm_bump.o  ../opcodes/libopcodes.la ../bfd/libbfd.la ../libiberty/libiberty.a  -lz 1> /dev/null 
    

    The question is, all the *_bump.o file (except the objdump_bump.o) will fail in src/.work3/make_bump.sh:

    opt -load ./libSkeletonPass_bump.so -SkeletonPass <$1.o> $1_bump.o ...

    opt: <stdin>:1:1: error: expected top-level entity
    (Garbled below)
    

    So we will fail in the antifuzz-all.py when opening objdump_d30_r4_o3(for example)

    Traceback (most recent call last):
      File "antifuzz_all.py", line 587, in <module>
        bump_depay, bump_ratio, fname, c_overhead, s_overhead = speedbump()
      File "antifuzz_all.py", line 415, in speedbump
        c_overhead, s_overhead = _ret_overhead(gen_pn)
      File "antifuzz_all.py", line 508, in _ret_overhead
        newfile_size = os.path.getsize(gen_pn)
      File "/usr/lib/python2.7/genericpath.py", line 57, in getsize
        return os.stat(filename).st_size
    OSError: [Errno 2] No such file or directory: '../antifuzz-tutorial/temp/binutils/objdump_d50_r17_o3'
    
    opened by lawyer61 1
Owner
gts3.org (SSLab@Gatech)
https://gts3.org
gts3.org (SSLab@Gatech)
Fuzzing tool (TFuzz): a fuzzing tool based on program transformation

T-Fuzz T-Fuzz consists of 2 components: Fuzzing tool (TFuzz): a fuzzing tool based on program transformation Crash Analyzer (CrashAnalyzer): a tool th

HexHive 244 Nov 9, 2022
This is the first released system towards complex meters` detection and recognition, which is implemented by computer vision techniques.

A three-stage detection and recognition pipeline of complex meters in wild This is the first released system towards detection and recognition of comp

Yan Shu 19 Nov 28, 2022
AntiFuzz: Impeding Fuzzing Audits of Binary Executables

AntiFuzz: Impeding Fuzzing Audits of Binary Executables Get the paper here: https://www.usenix.org/system/files/sec19-guler.pdf Usage: The python scri

Chair for Sys­tems Se­cu­ri­ty 88 Dec 21, 2022
A project which aims to protect your privacy using inexpensive hardware and easily modifiable software

Protecting your privacy using an ESP32, an IR sensor and a python script This project, which I personally call the "never-gonna-catch-me-in-the-act-ev

null 8 Oct 10, 2022
Protect against subdomain takeover

domain-protect scans Amazon Route53 across an AWS Organization for domain records vulnerable to takeover deploy to security audit account scan your en

OVO Technology 0 Nov 17, 2022
Code for the prototype tool in our paper "CoProtector: Protect Open-Source Code against Unauthorized Training Usage with Data Poisoning".

CoProtector Code for the prototype tool in our paper "CoProtector: Protect Open-Source Code against Unauthorized Training Usage with Data Poisoning".

Zhensu Sun 1 Oct 26, 2021
Discord-Protect is a simple discord bot allowing you to have some security on your discord server by ordering a captcha to the user who joins your server.

Discord-Protect Discord-Protect is a simple discord bot allowing you to have some security on your discord server by ordering a captcha to the user wh

Tir Omar 2 Oct 28, 2021
Nest Protect integration for Home Assistant. This will allow you to integrate your smoke, heat, co and occupancy status real-time in HA.

Nest Protect integration for Home Assistant Custom component for Home Assistant to interact with Nest Protect devices via an undocumented and unoffici

Mick Vleeshouwer 175 Dec 29, 2022
Pytorch code for "State-only Imitation with Transition Dynamics Mismatch" (ICLR 2020)

This repo contains code for our paper State-only Imitation with Transition Dynamics Mismatch published at ICLR 2020. The code heavily uses the RL mach

null 20 Sep 8, 2022
State of the Art Neural Networks for Deep Learning

pyradox This python library helps you with implementing various state of the art neural networks in a totally customizable fashion using Tensorflow 2

Ritvik Rastogi 60 May 29, 2022
Code for paper "A Critical Assessment of State-of-the-Art in Entity Alignment" (https://arxiv.org/abs/2010.16314)

A Critical Assessment of State-of-the-Art in Entity Alignment This repository contains the source code for the paper A Critical Assessment of State-of

Max Berrendorf 16 Oct 14, 2022
Quickly comparing your image classification models with the state-of-the-art models (such as DenseNet, ResNet, ...)

Image Classification Project Killer in PyTorch This repo is designed for those who want to start their experiments two days before the deadline and ki

null 349 Dec 8, 2022
State of the art Semantic Sentence Embeddings

Contrastive Tension State of the art Semantic Sentence Embeddings Published Paper · Huggingface Models · Report Bug Overview This is the official code

Fredrik Carlsson 88 Dec 30, 2022
QuickAI is a Python library that makes it extremely easy to experiment with state-of-the-art Machine Learning models.

QuickAI is a Python library that makes it extremely easy to experiment with state-of-the-art Machine Learning models.

null 152 Jan 2, 2023
LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models

LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models. Developers can reproduce these SOTA methods and build their own methods.

TuZheng 405 Jan 4, 2023
Deep Text Search is an AI-powered multilingual text search and recommendation engine with state-of-the-art transformer-based multilingual text embedding (50+ languages).

Deep Text Search - AI Based Text Search & Recommendation System Deep Text Search is an AI-powered multilingual text search and recommendation engine w

null 19 Sep 29, 2022
State-of-the-art data augmentation search algorithms in PyTorch

MuarAugment Description MuarAugment is a package providing the easiest way to a state-of-the-art data augmentation pipeline. How to use You can instal

null 43 Dec 12, 2022
A selection of State Of The Art research papers (and code) on human locomotion (pose + trajectory) prediction (forecasting)

A selection of State Of The Art research papers (and code) on human trajectory prediction (forecasting). Papers marked with [W] are workshop papers.

Karttikeya Manglam 40 Nov 18, 2022