Differential fuzzing for Neo (N3) blockchain virtual machine based on LibAFL
Clone repository:
git clone --recursive https://github.com/Slava0135/N3onDiff
Install dependencies:
- neo-go
- make
- go 1.22+
- neo
- dotnet-sdk 8.0
- aspnet-runtime 8.0
- N3onDiff
- make
- rust 1.80+ (nightly)
make
cargo run --release
Scripts with issues (different output) will be put into ./crashes
.
File names are base64 encoded scripts (using URL alphabet - not valid for VM!!!).
Contents of these files are NOT valid script bytes (they are used internally by LibAFL for serialization).
Instead, find *.metadata
files, where outputs for both VMs are saved and encoded base64 script can be found (and more info in the future).
In case you find new VM bugs using this fuzzer, please make an issue and add the link here!
Name | Description | Link |
---|---|---|
MODMUL operation returns wrong results for negative numbers | Description | Link |
MODPOW operation returns wrong results when base is negative | Description | Link |
PACKMAP operation keeps duplicate entries | Description | Link |
Licensed under "Mozilla Public License Version 2.0"
Copyright (c) 2024 Vyacheslav Kovalevsky