Testing Handbook Skills
Comprehensive security testing toolkit generated from the Trail of Bits Application Security Testing Handbook.
When to Use
- Setting up fuzzing campaigns for C/C++, Rust, Python, or Ruby
- Writing fuzzing harnesses for target functions
- Analyzing code coverage to guide testing
- Running sanitizers (AddressSanitizer, UBSan, MSan) to catch memory bugs
- Performing constant-time testing for cryptographic code
- Using Wycheproof test vectors for crypto validation
When NOT to Use
- Smart contract auditing or chain-specific review work
- Writing custom static-analysis rules from scratch
- General code review outside a security-testing workflow
- Vulnerability hunting without a concrete testing plan
Sub-Skills (17 total)
Fuzzers
Techniques
Static Analysis
Cryptographic Testing
Infrastructure
Meta
Workflow
Starting a fuzzing campaign
- Choose a fuzzer based on your target language (see Fuzzers table)
- Write a harness using the harness-writing skill
- Build with sanitizers (AddressSanitizer recommended as baseline)
- Create a seed corpus with representative inputs
- Run the campaign and monitor coverage
- Analyze coverage to find uncovered code and improve the harness
- Triage crashes and deduplicate findings
Setting up CI/CD testing
- OSS-Fuzz for open-source projects (continuous fuzzing)
- Semgrep + CodeQL for static analysis in PRs
- Wycheproof test vectors for crypto validation
Quick Start by Language
| Language |
Fuzzer |
Harness |
Sanitizer |
| C/C++ |
libFuzzer or AFL++ |
LLVMFuzzerTestOneInput |
ASan + UBSan |
| Rust |
cargo-fuzz |
fuzz_target! macro |
Built-in sanitizers |
| Python |
Atheris |
atheris.FuzzedDataProvider |
N/A |
| Ruby |
Ruzzy |
ruzzy harness pattern |
N/A |
Source Material
Generated from the Trail of Bits Application Security Testing Handbook using the testing-handbook-generator meta-skill.