Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Fuzzing
  3. Squirrel

Squirrel

MITC++v0.0.1

A coverage-guided fuzzer for database management systems (DBMSs) that uses language validity and coverage feedback.

GitHubGitHub
214 stars58 forks0 contributors

What is Squirrel?

Squirrel is a coverage-guided fuzzer specifically designed for testing database management systems (DBMSs). It generates and mutates SQL queries while ensuring language validity and using coverage feedback to explore deep code paths in DBMSs. The tool helps identify bugs and vulnerabilities by systematically testing supported databases like SQLite, PostgreSQL, MySQL, and MariaDB.

Target Audience

Security researchers, database developers, and QA engineers who need to test DBMSs for bugs and vulnerabilities through automated fuzzing.

Value Proposition

Developers choose Squirrel because it combines language-aware SQL generation with coverage-guided fuzzing, making it more effective at finding deep bugs in DBMSs compared to generic fuzzers. Its support for multiple popular databases and Docker-based setup also simplifies testing workflows.

Overview

Squirrel is a specialized fuzzer designed to test database management systems (DBMSs) by generating and mutating SQL queries. It helps uncover bugs and vulnerabilities in DBMSs by leveraging coverage-guided fuzzing techniques, ensuring the generated queries are syntactically valid and exploring deep code paths.

Key Features

  • Coverage-Guided Fuzzing — Uses AFLplusplus to guide test generation based on code coverage, improving bug detection efficiency.
  • Language Validity — Ensures generated SQL queries are syntactically correct for the target DBMS, reducing invalid test cases.
  • Multi-DBMS Support — Currently supports SQLite, PostgreSQL, MySQL, and MariaDB.
  • Two Execution Modes — Offers normal mode for SQLite and client/server mode for MySQL, MariaDB, and PostgreSQL.
  • Docker Integration — Provides Docker-based build and run instructions for easy setup and reproducibility.

Philosophy

Squirrel focuses on combining language-aware query generation with coverage feedback to systematically test DBMSs, aiming to uncover hard-to-find bugs through intelligent fuzzing strategies.

Use Cases

Best For

  • Finding security vulnerabilities in database management systems
  • Automated testing of SQL query parsers and execution engines
  • Coverage-guided fuzzing for DBMSs like SQLite, PostgreSQL, and MySQL
  • Reproducible fuzzing setups using Docker containers
  • Research on DBMS testing and bug discovery
  • Integrating fuzzing into CI/CD pipelines for database projects

Not Ideal For

  • Testing applications without a database component or non-DBMS software
  • Teams needing quick, plug-and-play fuzzing without complex instrumentation or setup
  • Projects using unsupported databases like Oracle, MongoDB, or other NoSQL systems
  • Simple smoke testing or functional validation where coverage-guided fuzzing is unnecessary overhead

Pros & Cons

Pros

Coverage-Guided Efficiency

Uses AFLplusplus to guide test generation based on code coverage, improving bug detection efficiency as stated in the key features and paper.

Language-Aware Query Generation

Ensures generated SQL queries are syntactically correct for target DBMSs, reducing invalid test cases and focusing on deep code paths per the philosophy.

Multi-DBMS Compatibility

Supports SQLite, PostgreSQL, MySQL, and MariaDB, allowing broad testing across popular database systems as listed in the README.

Docker-Based Reproducibility

Provides Docker build and run instructions for easy setup and consistent fuzzing environments, enhancing reproducibility.

Cons

Complex Initial Setup

Local builds require installing dependencies, compiling AFLplusplus, and instrumenting DBMSs, which is time-consuming and technically demanding, as detailed in the build instructions.

Limited Extensibility

Only supports four DBMSs with no straightforward way to add new databases without modifying the codebase, restricting its use to specific systems.

High Technical Barrier

Requires familiarity with fuzzing concepts and AFL toolchain, including environment variable configuration and instrumentation, making it less accessible for non-experts.

Frequently Asked Questions

Quick Stats

Stars214
Forks58
Contributors0
Open Issues0
Last commit3 years ago
CreatedSince 2020

Tags

#software-testing#coverage-guided-fuzzing#aflplusplus#postgresql#docker#sqlite#security-testing

Built With

Y
YAML
C
CMake
D
Docker
C
C++

Included in

Fuzzing959
Auto-fetched 18 hours ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub