funfuzz  by MozillaSecurity

Fuzzing harness for SpiderMonkey JavaScript engine testing

created 10 years ago
636 stars

Top 53.1% on sourcepulse

GitHubView on GitHub
1 Expert Loves This Project
Project Summary

This repository provides a harness for JavaScript-based fuzzers, primarily targeting the SpiderMonkey JavaScript engine. It's designed for security researchers and developers needing to test JavaScript engine robustness, identify bugs, and track regressions. The collection includes jsfunfuzz for general engine testing, compare_jit for output comparison, and randorderfuzz for random test integration.

How It Works

The core of funfuzz is a Python-based harness that orchestrates fuzzing campaigns. It automates restarting crashed fuzzers, analyzing output for new bugs, reducing test cases to their minimal reproducible form, and identifying regression introduction points. It integrates with SpiderMonkey's build system and leverages tools like compile_shell and autobisectjs for targeted testing and analysis.

Quick Start & Requirements

  • Install dependencies: pip install -r requirements.txt
  • Clone mozilla-central: hg clone https://hg.mozilla.org/mozilla-central/ ~/trees/mozilla-central/
  • Python 3.6+ required.
  • Building SpiderMonkey requires specific prerequisites (see README).
  • Address Sanitizer (ASan) builds have additional requirements.
  • Windows: Requires MozillaBuild (>= 3.2), Git, Debugging Tools for Windows, and Visual Studio 2017+.
  • macOS: Requires xcode-select --install and LLVM via Homebrew.
  • Linux: Requires core_uses_pid=1, 32-bit libraries (Debian/Ubuntu: lib32z1 gcc-multilib g++-multilib), and gdb. Clang is needed for ASan builds.
  • A ~/.fuzzmanagerconf file is necessary for configuration.
  • Official docs: https://github.com/MozillaSecurity/funfuzz

Highlighted Details

  • Automates test case reduction and regression identification.
  • Supports deterministic and random fuzzing configurations.
  • Integrates with SpiderMonkey's build process and analysis tools.
  • Cross-platform support with detailed setup instructions for Windows, macOS, and Linux.

Maintenance & Community

This project is maintained by Mozilla Security. Further community interaction details are not explicitly provided in the README.

Licensing & Compatibility

The README does not explicitly state a license. Compatibility for commercial use or closed-source linking is not specified.

Limitations & Caveats

The project primarily targets Mercurial repositories for mozilla-central; Git support is less tested. Some features like funbind are Linux-only. Older or less common operating systems may encounter issues.

Health Check
Last commit

2 years ago

Responsiveness

Inactive

Pull Requests (30d)
0
Issues (30d)
0
Star History
1 stars in the last 90 days

Explore Similar Projects

Starred by Elie Bursztein Elie Bursztein(Cybersecurity Lead at Google DeepMind), Chip Huyen Chip Huyen(Author of AI Engineering, Designing Machine Learning Systems), and
1 more.

oss-fuzz-gen by google

0.3%
1k
LLM-powered fuzz target generator for C/C++/Java/Python projects, benchmarked via OSS-Fuzz
created 1 year ago
updated 5 days ago
Starred by Boris Cherny Boris Cherny(Creator of Claude Code; MTS at Anthropic), Hiroshi Shibata Hiroshi Shibata(Core Contributor to Ruby), and
4 more.

oss-fuzz by google

0.2%
11k
Continuous fuzzing for open source software
created 9 years ago
updated 1 day ago
Feedback? Help us improve.