Skip to content
Fuzzing Go crypto
Go Assembly Other
Branch: master
Clone or download
Latest commit b27285a Apr 3, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
fuzz fuzz: factor out some helper functions Feb 13, 2019
infra tweak variables Feb 6, 2019
script update pushcorpus helper script Apr 3, 2019
target target: more corpus Apr 3, 2019
.gitignore .gitignore Jan 31, 2019
.travis.yml ci: parallel no longer required Feb 13, 2019
LICENSE Initial commit Jan 31, 2019 add experimental "literate" poly1305 target (#18) Apr 3, 2019


Fuzzing Go crypto with go-fuzz.



Fuzzers compare assembly implementations to the corresponding pure Go versions.


Quick Start

Install dependencies with

$ ./script/bootstrap

Then start a fuzzer with ./script/fuzz <target> where <target> is one of the subdirectories of target/, for example

$ ./script/fuzz sha1
2019/02/05 22:37:37 workers: 4, corpus: 56 (3s ago), crashers: 0, restarts: 1/0, execs: 0 (0/sec), cover: 0, uptime: 3s
2019/02/05 22:37:40 workers: 4, corpus: 56 (6s ago), crashers: 0, restarts: 1/4459, execs: 40139 (6666/sec), cover: 124, uptime: 6s
2019/02/05 22:37:43 workers: 4, corpus: 56 (9s ago), crashers: 0, restarts: 1/4349, execs: 52191 (5787/sec), cover: 124, uptime: 9s
2019/02/05 22:37:46 workers: 4, corpus: 56 (12s ago), crashers: 0, restarts: 1/6450, execs: 103200 (8588/sec), cover: 124, uptime: 12s


The infra/ directory contains Terraform configuration to run fuzzers on EC2 spot fleets (to minimize cost). Before you proceed note that this will cost you money.

To utilize this infrastructure, first build an archive to distribute to the boxes

$ GOOS=linux GOARCH=amd64 ./script/dist

This should build an archive of all files required to run the fuzzers on EC2 boxes. To setup the infrastructure:

$ cd infra/
$ terraform init
$ terraform apply -var 'package_path=<path to dist archive>' -var 'targets=["p256", "sha3"]'

Note this expects to find AWS credentials in ~/.aws/credentials. For each specified target, this will setup a coordinator node and a worker fleet. See to configure the size of the worker fleet.

You can’t perform that action at this time.