원클릭으로
fuzz
Property-based and adversarial input testing — generates random/adversarial inputs to find crashes, hangs, and invariant violations
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Property-based and adversarial input testing — generates random/adversarial inputs to find crashes, hangs, and invariant violations
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Process autonomous task queue from do-work/ folder
Enter plan mode for complex tasks (pour energy into the plan for 1-shot implementation)
Initiate autonomous PR review process with Codex agent
Run comprehensive repo assessment with Codex (every 3 PRs)
Comprehensive security audit covering 10 threat categories
Install all automation for a new repo (git hooks + GitHub Actions)
| name | fuzz |
| description | Property-based and adversarial input testing — generates random/adversarial inputs to find crashes, hangs, and invariant violations |
Created: 2026-02-25-00-00 Last Updated: 2026-02-25-00-00
Property-based and adversarial input testing. Generates random and adversarial inputs to find crashes, hangs, and invariant violations that hand-written tests miss.
Complements /bug-review (pattern matching) and /redteam (exploit verification) with automated input generation.
/fuzz # Full fuzzing (all 6 categories, 10000 iterations)
/fuzz --quick # Categories 1-2 (parsers + validators), 1000 iterations. ~3 min.
/fuzz --focus parsers # Single category deep-dive
/fuzz --target src/utils.ts # Fuzz specific file/function
Targets: JSON/XML/YAML/CSV/URL/date parsers, custom format parsers.
Technique:
{"a":{"a":{"a":...}}} (100+ levels)Invariant: Parser never crashes (throws controlled error or returns valid result).
Targets: Email, phone, URL, date, format validators, schema validators.
Technique:
user@, http://, 2025-13-01 (invalid month)user+<script>@example.com, http://example.com/../../etcInvariant: Validator returns boolean without crashing. Never accepts known-invalid input.
Targets: Express routes, FastAPI endpoints, GraphQL resolvers, API route handlers.
Technique:
Invariant: Handler returns appropriate HTTP status (4xx for bad input, never 5xx). No unhandled exceptions.
Targets: Auth flows, checkout processes, multi-step forms, workflow engines.
Technique:
Invariant: State machine rejects invalid transitions gracefully. No corrupted state.
Targets: JSON serialization, custom serializers, data export/import.
Technique:
deserialize(serialize(x)) === x for all valid inputs__proto__, constructor, prototype keysInvariant: Round-trip preserves data. Serializer never produces corrupt output.
Targets: Financial calculations, counters, ID generators, math utilities.
Technique:
-0 vs 0 comparisonInvariant: No silent precision loss. No NaN propagation. Financial calculations use integer cents or Decimal types.
Zero-install where possible. Install only if the project doesn't already have the tool.
| Language | Primary Tool | Fallback |
|---|---|---|
| JavaScript/TS | fast-check (npm install --save-dev fast-check) | Raw Math.random() + edge case arrays |
| Python | hypothesis (pip install hypothesis) | Raw random + edge case lists |
| Go | go test -fuzz (built-in 1.18+) | N/A |
| Other | Bash fuzzer: pipe random/edge-case inputs through wrapper | N/A |
Check first: Before installing, check if the project already has fast-check, hypothesis, or equivalent in its dependencies.
Embedded in every fuzz run. These are the inputs most likely to trigger bugs:
Strings:
"" (empty)"\0" (null byte)"null", "undefined", "NaN", "true", "false" (type-confusing strings)"<script>alert(1)</script>" (XSS)"' OR 1=1--" (SQL injection)"../", "....//....//" (path traversal)"A".repeat(100000) (oversized)Numbers:
0, -0, 1, -1Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER + 1Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER - 1Infinity, -Infinity, NaN0.1 + 0.2 (floating point)Number.EPSILON, Number.MIN_VALUEObjects/Arrays:
null, undefined{}, [] (empty){toString: () => { throw new Error() }} (evil toString)__fuzz_<target>.test.{ts,py}
__fuzz_* filesgit status--quick: Categories 1-2 (parsers + validators), 1000 iterations, 30s timeout. ~3 min.--focus <cat>: Single category. Options: parsers, validators, api, state, serialization, numeric.--target <file>: Fuzz specific file/function.__fuzz_* artifacts on completion. Verify with git status.--save-dev or virtual environments.## Fuzz Report - [date]
**Scope:** Full / Quick / Focus: [category] / Target: [file]
**Tool:** fast-check / hypothesis / go fuzz / bash fallback
**Iterations:** N per target
**Timeout:** Ns per target
### Summary
| # | Category | Targets Found | Targets Fuzzed | Crashes | Hangs | Violations |
|---|----------|---------------|----------------|---------|-------|------------|
| 1 | Parsers | 5 | 5 | 1 | 0 | 0 |
| 2 | Validators | 3 | 3 | 0 | 0 | 2 |
### Findings
**[CRASH] JSON parser crashes on deeply nested input**
- File: `src/utils/parser.ts:15`
- Function: `parseConfig()`
- Failing input: `{"a":{"a":{"a":...}}}` (depth 150)
- Error: `RangeError: Maximum call stack size exceeded`
- Minimized input: Nested object at depth 100
- Fix: Add depth limit to recursive parser
**[VIOLATION] Email validator accepts invalid input**
- File: `src/validators/email.ts:8`
- Function: `isValidEmail()`
- Failing input: `"user@"` (missing domain)
- Expected: `false`
- Actual: `true`
- Fix: Require domain part after `@`
### Cleanup Verification
- `__fuzz_*` files: 0 remaining
- `git status`: clean
/redteam -- Active exploit verification (targeted attacks vs. random fuzzing)/bug-review -- Pattern-matching bug audit (static analysis vs. dynamic testing)/mutation-test -- Test suite quality verification (are tests catching bugs?)