A coverage-guided fuzzer for database management systems (DBMSs) that uses language validity and coverage feedback.
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.
Security researchers, database developers, and QA engineers who need to test DBMSs for bugs and vulnerabilities through automated fuzzing.
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.
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.
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.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses AFLplusplus to guide test generation based on code coverage, improving bug detection efficiency as stated in the key features and paper.
Ensures generated SQL queries are syntactically correct for target DBMSs, reducing invalid test cases and focusing on deep code paths per the philosophy.
Supports SQLite, PostgreSQL, MySQL, and MariaDB, allowing broad testing across popular database systems as listed in the README.
Provides Docker build and run instructions for easy setup and consistent fuzzing environments, enhancing reproducibility.
Local builds require installing dependencies, compiling AFLplusplus, and instrumenting DBMSs, which is time-consuming and technically demanding, as detailed in the build instructions.
Only supports four DBMSs with no straightforward way to add new databases without modifying the codebase, restricting its use to specific systems.
Requires familiarity with fuzzing concepts and AFL toolchain, including environment variable configuration and instrumentation, making it less accessible for non-experts.