Git Product home page Git Product logo

fluff's Introduction

Fluff

A tool designed to synthesise semantically correct JavaScript snippets given arbitrary data.

Useful for fuzzing.

JS Runtimes supported out-of-the-box

Requirements

  • docker
  • make

Building

  • (optional) Check if you have access to docker (run docker info)
  • (optional) Specify desired version of JS runtime in Makefile.conf
  • Run make (jerryscript | njs | duktape | v8)
  • If everything builds correctly the process will result in:
    • build/fluff_* - binary to fuzz
    • build/fluff_*_dry - binary that will convert Fluff bytecode to JS testcase (stdout)
    • build/grammars
      • js_grammar.yaml - es5.1 grammar file
      • js_grammar_es6.yaml - es6 grammar file

Usage

Typical fuzzing setup:

  • Create input folder and sample testcase, i.e. mkdir in && echo "420" >> in/testcase
  • Start fuzzing using afl-fuzz, for example: afl-fuzz -m none -i in -o out ./fluff_njs @@ js_grammar.yaml
  • (optional) you can use build container to run fuzzing, requires some manual work
docker run -it -d -v path/to/fluff/repository/build:/home/build/fluff identifier /bin/bash
docker exec -it container_number bash
# afl-fuzz is preinstalled in /home/build/afl
  • Enjoy your cup of tea/coffee and wait for crashes

Description

Detailed information about the design of Fluff can be read in the whitepaper.

Contributing

Patches, additions and other contributions are welcome! If you see a feature which you could implement or a bug which you could fix please send us a message or a pull request. If you have found some interesting bug with this tool, please leave us a message/github issue for the future Hall Of Fame.

Contact

If you want to drop us a message, feel free to send a mail to [email protected] or [email protected].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.