All Projects → SoftSec-KAIST → Codealchemist

SoftSec-KAIST / Codealchemist

Licence: mit
Semantics-aware Code Generation for Finding JS engine Vulnerabilities

Programming Languages

fsharp
127 projects

Projects that are alternatives of or similar to Codealchemist

Protofuzz
Google Protocol Buffers message generator
Stars: ✭ 171 (-16.18%)
Mutual labels:  fuzzer
Yasha
A command-line tool to render Jinja templates for great good
Stars: ✭ 189 (-7.35%)
Mutual labels:  code-generation
Charlatan
Go Interface Mocking Tool
Stars: ✭ 195 (-4.41%)
Mutual labels:  code-generation
Pythonfuzz
coverage guided fuzz testing for python
Stars: ✭ 175 (-14.22%)
Mutual labels:  fuzzer
Sharpfuzz
AFL-based fuzz testing for .NET
Stars: ✭ 185 (-9.31%)
Mutual labels:  fuzzer
Javafuzz
coverage guided fuzz testing for java
Stars: ✭ 193 (-5.39%)
Mutual labels:  fuzzer
Evolutility Ui Jquery
Model-driven Web UI for CRUD using REST or localStorage.
Stars: ✭ 164 (-19.61%)
Mutual labels:  code-generation
Ntcall64
Windows NT x64 syscall fuzzer
Stars: ✭ 201 (-1.47%)
Mutual labels:  fuzzer
Xsd2php
Convert XSD into PHP classes and JMS serializer definitions
Stars: ✭ 190 (-6.86%)
Mutual labels:  code-generation
Graphql Typed Client
A tool that generates a strongly typed client library for any GraphQL endpoint. The client allows writing GraphQL queries as plain JS objects (with type safety, awesome code completion experience, custom scalar type mapping, type guards and more)
Stars: ✭ 194 (-4.9%)
Mutual labels:  code-generation
Filebuster
An extremely fast and flexible web fuzzer
Stars: ✭ 176 (-13.73%)
Mutual labels:  fuzzer
Activej
ActiveJ is an alternative Java platform built from the ground up. ActiveJ redefines web, high load, and cloud programming in Java, featuring ultimate performance and scalability!
Stars: ✭ 183 (-10.29%)
Mutual labels:  code-generation
Swift Enum Properties
🤝 Struct and enum data access in harmony.
Stars: ✭ 191 (-6.37%)
Mutual labels:  code-generation
Codelingo
CodeLingo // The Linter for Devs Who Hate Linters
Stars: ✭ 174 (-14.71%)
Mutual labels:  code-generation
Syncmap
A typed implementation of the Go sync.Map using code generation
Stars: ✭ 200 (-1.96%)
Mutual labels:  code-generation
Glad
Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
Stars: ✭ 2,296 (+1025.49%)
Mutual labels:  code-generation
Testura.code
Testura.Code is a wrapper around the Roslyn API and used for generation, saving and compiling C# code. It provides methods and helpers to generate classes, methods, statements and expressions.
Stars: ✭ 189 (-7.35%)
Mutual labels:  code-generation
Regexpu
A source code transpiler that enables the use of ES2015 Unicode regular expressions in ES5.
Stars: ✭ 201 (-1.47%)
Mutual labels:  code-generation
Convalida
A simple, lightweight and powerful field validation library for Android.
Stars: ✭ 201 (-1.47%)
Mutual labels:  code-generation
Pylustrator
Visualisations of data are at the core of every publication of scientific research results. They have to be as clear as possible to facilitate the communication of research. As data can have different formats and shapes, the visualisations often have to be adapted to reflect the data as well as possible. We developed Pylustrator, an interface to directly edit python generated matplotlib graphs to finalize them for publication. Therefore, subplots can be resized and dragged around by the mouse, text and annotations can be added. The changes can be saved to the initial plot file as python code.
Stars: ✭ 192 (-5.88%)
Mutual labels:  code-generation

CodeAlchemist

CodeAlchemist is a JavaScript engine fuzzer that improves classic grammar-based JS engine fuzzers by a novel test case generation algorithm, called semantics-aware assembly. The details of the algorithm is in our paper, "CodeAlchemist: Semantics-Aware Code Generation to Find Vulnerabilities in JavaScript Engines", which appeared in NDSS 2019. This is a stable version of CodeAlchemist and it currently supports ChakraCore, V8, SpiderMonkey, and JavaScriptCore.

Installation

CodeAlchemist currently works on only Linux and we tested on Ubuntu 18.04.

  1. Install dependencies (build-essential, nodejs, npm, esprima, dotnet)
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install nodejs npm
$ npm i [email protected]

Installation for dotnet depends on OS version, so please refer this link.

  1. Clone and build CodeAlchemist
$ git clone https://github.com/SoftSec-KAIST/CodeAlchemist
$ cd CodeAlchemist
$ make

Usage

  1. Prepare to start

Prepare JS seed files, a configuration file, and the requirements in the configuration. Please refer conf/README.md for writing the configuration file.

  1. Preprocess JS seed files
$ dotnet bin/Main.dll rewrite <conf ABSPATH>
$ dotnet bin/Main.dll instrument <conf ABSPATH>
  1. Run fuzzing process
$ dotnet bin/Main.dll fuzz <conf ABSPATH>

There are four optional parameters for our JS code generation algorithm.

  • iMax (default: 8): The maximum number of iterations of the generation algorithm.
  • pBlk (default: 16): The probability of reinventing block statements.
  • iBlk (default: 3): The maximum number of iteration for generating a block statement.
  • dMax (default: 3): The maximum nesting level for a reassembling block statement.

You can specify parameters with following commands.

$ dotnet bin/Main.dll fuzz <conf ABSPATH> --iMax 8 --pBlk 16 --iBlk 3 --dMax 3

CVEs (Credits)

If you find bugs and get CVEs by running CodeAlchemist, please let us know by sending a PR for ./docs/CVE.md.

  • JavaScriptCore: CVE-2018-4464, CVE-2018-4437, CVE-2018-4378, CVE-2018-4372

Authors

This research project has been conducted by SoftSec Lab at KAIST.

Citation

If you plan to use CodeAlchemist in your own research. Please consider citing our paper:

@INPROCEEDINGS{han:ndss:2019,
  author = {HyungSeok Han and DongHyeon Oh and Sang Kil Cha},
  title = {{CodeAlchemist}: Semantics-Aware Code Generation to Find Vulnerabilities in JavaScript Engines},
  booktitle = ndss,
  year = 2019
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].