mustflow 2.116.1 → 2.116.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/default/i18n.toml +72 -6
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +37 -11
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/SKILL.md +477 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-diagnostics-abi-linker-checklist.md +778 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-generators-properties-checklist.md +501 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-test-strategy-differential-checklist.md +498 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/debug-symbol-symbolication-checklist.md +412 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/ir-design-ssa-pass-pipeline-checklist.md +759 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/miscompile-reduction-ir-checklist.md +434 -0
- package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/SKILL.md +55 -36
- package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/references/path-containment-handle-checklist.md +251 -0
- package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/SKILL.md +133 -32
- package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/references/file-upload-parser-ssrf-resource-checklist.md +306 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/SKILL.md +310 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-concurrency-model-checking-smt-checklist.md +457 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-contracts-modeling-checklist.md +434 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-memory-bounds-ci-checklist.md +509 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/SKILL.md +439 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-harness-campaign-checklist.md +379 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-oracle-triage-ci-checklist.md +307 -0
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md +48 -28
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/references/operation-ordering-stale-write-checklist.md +259 -0
- package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/SKILL.md +329 -0
- package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/references/input-boundary-security-checklist.md +319 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/SKILL.md +306 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/input-session-state-checklist.md +298 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/remote-input-transport-interaction-checklist.md +328 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/SKILL.md +353 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-diagnostics-recovery-checklist.md +267 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-execution-closure-performance-checklist.md +428 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-gc-verification-checklist.md +457 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-semantics-runtime-checklist.md +391 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/SKILL.md +294 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/modal-loop-reentrancy-checklist.md +290 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/nested-modal-state-lifetime-checklist.md +297 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/SKILL.md +252 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/dns-network-resolution-checklist.md +394 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/language-symbol-resolution-checklist.md +282 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/module-package-loader-resolution-checklist.md +352 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/SKILL.md +103 -17
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/cst-ast-lowering-checklist.md +260 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/lexer-tokenization-checklist.md +397 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-serialization-compatibility-checklist.md +164 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-traversal-rewrite-checklist.md +209 -0
- package/templates/default/locales/en/.mustflow/skills/race-condition-review/SKILL.md +68 -11
- package/templates/default/locales/en/.mustflow/skills/race-condition-review/references/race-reproduction-memory-model-checklist.md +268 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +151 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/SKILL.md +343 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-auth-stream-resume-checklist.md +413 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-handoff-protocol-checklist.md +485 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/SKILL.md +267 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/admission-decision-recovery-checklist.md +308 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/two-phase-transition-checklist.md +229 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/SKILL.md +300 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-affinity-event-loop-checklist.md +277 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-dispatch-lifecycle-checklist.md +292 -0
- package/templates/default/manifest.toml +115 -1
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
# Fuzz Harness and Campaign Checklist
|
|
2
|
+
|
|
3
|
+
Use this reference when `fuzz-harness-review` reaches target partitioning, input modeling,
|
|
4
|
+
instrumentation, feedback features, corpus maintenance, campaign diversity, stateful sequences,
|
|
5
|
+
failure injection, or artifact triage. Treat tool flags as examples to verify against the pinned
|
|
6
|
+
tool version, not as command authority.
|
|
7
|
+
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
1. Target matrix and reachability
|
|
11
|
+
2. Iteration determinism and reset
|
|
12
|
+
3. Oracle matrix
|
|
13
|
+
4. Input models and mutation lanes
|
|
14
|
+
5. Instrumentation and feedback
|
|
15
|
+
6. Corpus, dictionary, and regression seeds
|
|
16
|
+
7. Streaming, stateful, and failure-injection inputs
|
|
17
|
+
8. Campaign diversity and plateau diagnosis
|
|
18
|
+
9. Artifact reproduction and bounded regression
|
|
19
|
+
10. Primary anchors
|
|
20
|
+
|
|
21
|
+
## 1. Target matrix and reachability
|
|
22
|
+
|
|
23
|
+
Build targets around the narrowest semantic boundary that can fail independently. Record for every
|
|
24
|
+
target:
|
|
25
|
+
|
|
26
|
+
- target name, owning module, entrypoint, and build identity;
|
|
27
|
+
- input representation and maximum bytes, nodes, depth, operations, or messages;
|
|
28
|
+
- expensive initialization outside the loop and mutable state reset inside it;
|
|
29
|
+
- stage reached: decode, parse, validate, normalize, serialize, execute, persist, or transmit;
|
|
30
|
+
- side effects and the fake, in-memory, transactional, or rollback boundary that contains them;
|
|
31
|
+
- oracle classes and resource counters;
|
|
32
|
+
- instrumented modules and excluded modules;
|
|
33
|
+
- seed, dictionary, mutator, and artifact-decoder versions; and
|
|
34
|
+
- configured smoke, corpus replay, sanitizer, coverage, or manual campaign owner.
|
|
35
|
+
|
|
36
|
+
For a parser or protocol family, consider this matrix:
|
|
37
|
+
|
|
38
|
+
| Target | Input model | Main purpose | Common starvation risk |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| Raw decoder or parser | arbitrary bytes | malformed framing, progress, recovery, memory safety | none; may remain shallow |
|
|
41
|
+
| Streaming parser | bytes plus chunk schedule | partial input, EOF, retry, state carry | chunk schedule not preserved |
|
|
42
|
+
| Parse and validate | raw bytes | syntax-to-semantic boundary | parser rejection dominates |
|
|
43
|
+
| Normalize or canonicalize | valid or near-valid object | idempotence and invariant preservation | raw malformed paths absent |
|
|
44
|
+
| Serializer | bounded structured object | size, writer, invalid object combinations | byte decoder rejects objects |
|
|
45
|
+
| Parse-serialize-parse | raw and structured lanes | semantic round trip and canonical stability | byte equality false positives |
|
|
46
|
+
| Inner payload | decoded structure | deep semantic or execution behavior | outer validation bypassed |
|
|
47
|
+
| Outer envelope | real wire framing | signature, checksum, compression, auth, integration | expensive and rejection-heavy |
|
|
48
|
+
| Stateful sequence | operation list plus payloads | transition, replay, transaction, session bugs | single-message mutation |
|
|
49
|
+
| Initialization | configuration or first input | setup and teardown failures | optimized hot-loop target skips it |
|
|
50
|
+
|
|
51
|
+
Do not hide one target behind a mode byte when the modes have unrelated corpora, state, speed, or
|
|
52
|
+
oracles. Split them unless sharing materially improves crossover without causing one path to starve
|
|
53
|
+
the others.
|
|
54
|
+
|
|
55
|
+
Measure stage reach rather than only executions per second. A fast target that exits at the first
|
|
56
|
+
magic check may have lower useful execution rate than a slower target that reaches semantic code.
|
|
57
|
+
|
|
58
|
+
## 2. Iteration determinism and reset
|
|
59
|
+
|
|
60
|
+
Write an iteration-state ledger:
|
|
61
|
+
|
|
62
|
+
- arenas, heaps, pools, caches, interners, registries, singletons, and lazy initialization;
|
|
63
|
+
- cursors, parser state, protocol session, authentication state, transaction state, and file offsets;
|
|
64
|
+
- clock, timezone, locale, randomness, hash seed, process environment, hostname, and DNS;
|
|
65
|
+
- temporary directories, files, sockets, pipes, shared memory, and database fixtures;
|
|
66
|
+
- threads, tasks, callbacks, timers, signals, child processes, and outstanding I/O;
|
|
67
|
+
- fault-injection counters and allocation, read, write, retry, or disconnect schedules; and
|
|
68
|
+
- logs, metrics, trace exporters, crash handlers, and global error status.
|
|
69
|
+
|
|
70
|
+
For each mutable item, name reset, recreation, snapshot restore, or process-isolation ownership.
|
|
71
|
+
Immutable initialization may stay outside the loop. Input-derived state may not.
|
|
72
|
+
|
|
73
|
+
Make environment branches deterministic without erasing them. Prefer an input-controlled adapter:
|
|
74
|
+
the artifact selects clock, locale, RNG seed, fixture, short-read point, or allocation failure.
|
|
75
|
+
A hard-coded environment is stable but cannot explore environment-dependent behavior.
|
|
76
|
+
|
|
77
|
+
Test replay from:
|
|
78
|
+
|
|
79
|
+
1. the same process after unrelated prior inputs;
|
|
80
|
+
2. a clean process;
|
|
81
|
+
3. a different worker with the same build identity; and
|
|
82
|
+
4. the minimized artifact.
|
|
83
|
+
|
|
84
|
+
Normalized outcome, oracle class, and meaningful coverage should agree. If only a prior input makes
|
|
85
|
+
the artifact fail, save the prefix sequence temporarily and classify the state leak before shrinking.
|
|
86
|
+
|
|
87
|
+
Persistent mode is a performance technique, not evidence that reset is correct. Watch stability or
|
|
88
|
+
equivalent repeated-input features and treat material instability as wasted search and unreliable
|
|
89
|
+
artifacts.
|
|
90
|
+
|
|
91
|
+
## 3. Oracle matrix
|
|
92
|
+
|
|
93
|
+
Coverage tells the fuzzer which input is interesting. The oracle decides whether behavior is wrong.
|
|
94
|
+
Keep the two ledgers separate.
|
|
95
|
+
|
|
96
|
+
### Memory and runtime oracles
|
|
97
|
+
|
|
98
|
+
- address, bounds, use-after-free, double-free, leak, undefined-behavior, race, uninitialized-read,
|
|
99
|
+
assertion, panic, and language-runtime checks;
|
|
100
|
+
- debug-with-assertions and release-like optimized configurations when semantics can diverge;
|
|
101
|
+
- distinct sanitizer or detector campaigns when tools are incompatible or impose different costs;
|
|
102
|
+
- deterministic failure classification independent of renderer wording.
|
|
103
|
+
|
|
104
|
+
### Contract oracles
|
|
105
|
+
|
|
106
|
+
- success never consumes beyond input and repeated success does not consume zero indefinitely;
|
|
107
|
+
- failure leaves cursor, output, transaction, session, and side-effect state within contract;
|
|
108
|
+
- `encoded_size` equals actual bytes written for exact capacity;
|
|
109
|
+
- one-byte-short, exact, and one-byte-large buffers obey writer policy;
|
|
110
|
+
- parse and serialize preserve declared semantics, not incidental byte ordering or whitespace;
|
|
111
|
+
- canonical output stabilizes after one normalization or parse-serialize cycle;
|
|
112
|
+
- strict and compatibility modes respect their separate contracts;
|
|
113
|
+
- unknown field, duplicate field, invalid enum, NaN, negative zero, ordering, and normalization
|
|
114
|
+
policies remain explicit;
|
|
115
|
+
- same initial state and input produce the same normalized result.
|
|
116
|
+
|
|
117
|
+
### Differential oracles
|
|
118
|
+
|
|
119
|
+
Normalize accepted status, semantic tree or object, field multiplicity, consumed length, trailing
|
|
120
|
+
bytes, numeric overflow, Unicode form, error location, and externally visible side effects. Compare
|
|
121
|
+
only fields the shared contract defines.
|
|
122
|
+
|
|
123
|
+
A disagreement is a triage candidate, not majority proof. Separate:
|
|
124
|
+
|
|
125
|
+
- specified disagreement that proves a defect;
|
|
126
|
+
- unspecified or implementation-defined behavior;
|
|
127
|
+
- compatibility-mode difference;
|
|
128
|
+
- diagnostic-rendering noise;
|
|
129
|
+
- versioned intentional change; and
|
|
130
|
+
- harness normalization bug.
|
|
131
|
+
|
|
132
|
+
### Resource oracles
|
|
133
|
+
|
|
134
|
+
Instrument work units, transitions, byte revisits, comparisons, backtracking, allocations, retained
|
|
135
|
+
bytes, output bytes, nodes, depth, operations, messages, retries, and elapsed CPU where available.
|
|
136
|
+
Use both absolute ceilings and input-relative growth limits.
|
|
137
|
+
|
|
138
|
+
Wall-clock timeout, RSS limit, and single-allocation limit remain useful final guards, but machine
|
|
139
|
+
load makes them weak primary regression oracles. Preserve timeout and OOM artifacts with their
|
|
140
|
+
counter evidence.
|
|
141
|
+
|
|
142
|
+
## 4. Input models and mutation lanes
|
|
143
|
+
|
|
144
|
+
Map every barrier to an input lane.
|
|
145
|
+
|
|
146
|
+
### Raw lane
|
|
147
|
+
|
|
148
|
+
Mutate bytes without repairing syntax. This owns malformed encoding, length, delimiter, checksum,
|
|
149
|
+
partial token, parser progress, error recovery, and boundary memory safety.
|
|
150
|
+
|
|
151
|
+
### Structured lane
|
|
152
|
+
|
|
153
|
+
Decode to a bounded object, AST, message, operation list, or purpose-built intermediate form. Mutate
|
|
154
|
+
fields, enum values, optional presence, repeated elements, subtrees, nesting, and sequence structure,
|
|
155
|
+
then serialize deterministically.
|
|
156
|
+
|
|
157
|
+
The structured decoder and serializer must be total for bounded input, reject impossible sizes
|
|
158
|
+
before allocation, and make progress. Shared production recognition logic can reproduce the same bug
|
|
159
|
+
in generator and target; keep critical test decoding simple or independently checked.
|
|
160
|
+
|
|
161
|
+
### Repair, mismatch, and overflow lanes
|
|
162
|
+
|
|
163
|
+
- Repair: update all dependent lengths, offsets, checksums, compression frames, or test signatures
|
|
164
|
+
so inner code remains reachable.
|
|
165
|
+
- Mismatch: corrupt exactly one dependency while preserving the rest to exercise validation,
|
|
166
|
+
rollback, and error mapping.
|
|
167
|
+
- Overflow: bias declared and actual sizes around zero, one, signed and unsigned boundaries,
|
|
168
|
+
maximum minus one, maximum, maximum plus one, alignment, varint length, chunk size, and depth.
|
|
169
|
+
|
|
170
|
+
Do not always repair and do not always corrupt. Either extreme starves a distinct class of behavior.
|
|
171
|
+
|
|
172
|
+
### Wrapped payload lane
|
|
173
|
+
|
|
174
|
+
For compression, encryption, or signatures, retain:
|
|
175
|
+
|
|
176
|
+
- an outer raw lane that exercises envelope parsing and validation;
|
|
177
|
+
- a wrapper mutator that decodes, mutates, and regenerates with test-owned keys or configuration; and
|
|
178
|
+
- an inner payload target that starts after the expensive gate.
|
|
179
|
+
|
|
180
|
+
Never store production keys or claim the inner target covers the outer validation.
|
|
181
|
+
|
|
182
|
+
### Metamorphic and generated relations
|
|
183
|
+
|
|
184
|
+
Use relations with explicit preconditions: reorder an unordered map, alter chunk partitions without
|
|
185
|
+
altering bytes, add grammar-neutral trivia, normalize twice, or serialize a semantically equal
|
|
186
|
+
object. Reject transformations whose precondition the generator cannot prove.
|
|
187
|
+
|
|
188
|
+
## 5. Instrumentation and feedback
|
|
189
|
+
|
|
190
|
+
Confirm instrumentation by module and frontier, not by a rising global number.
|
|
191
|
+
|
|
192
|
+
- List target-owned static libraries, shared libraries, generated code, plugins, subprocesses, and
|
|
193
|
+
child runtimes.
|
|
194
|
+
- Confirm new features or program counters originate in the intended module.
|
|
195
|
+
- Use allowlists or blocklists to reduce dependency, logging, allocator, or runtime noise without
|
|
196
|
+
excluding owned parsing or execution paths.
|
|
197
|
+
- When context or n-gram coverage expands the feature space, size the map or feature storage and
|
|
198
|
+
measure collision or corpus growth.
|
|
199
|
+
- Do not instrument only the parent when work happens in an unobserved subprocess.
|
|
200
|
+
|
|
201
|
+
Match feedback to a named barrier:
|
|
202
|
+
|
|
203
|
+
| Barrier | Candidate feedback or change |
|
|
204
|
+
| --- | --- |
|
|
205
|
+
| Fixed magic, string, integer, or switch | dictionary, compare tracing, value profile |
|
|
206
|
+
| Input transformed before compare | transformation-aware comparison or structured lane |
|
|
207
|
+
| Coupled length, offset, checksum | repair and mismatch lanes |
|
|
208
|
+
| Same edges, different semantic state | stable domain feature or state identifier |
|
|
209
|
+
| Correct multi-message prefix required | sequence seeds and state feedback |
|
|
210
|
+
| Rare frontier seed is starved | rare-path or directed campaign lane |
|
|
211
|
+
| Feature explosion or instability | normalize, reduce, or remove noisy feature |
|
|
212
|
+
| No target features | repair instrumentation boundary |
|
|
213
|
+
|
|
214
|
+
Edge coverage is a cheap proxy. Value, compare, data-flow, context, AST-shape, state, or semantic
|
|
215
|
+
features may improve guidance but can slow execution and inflate the corpus. Measure feature growth,
|
|
216
|
+
collision or cardinality risk, corpus cost, and net frontier progress before assigning them broadly.
|
|
217
|
+
|
|
218
|
+
## 6. Corpus, dictionary, and regression seeds
|
|
219
|
+
|
|
220
|
+
Maintain a minimal seed basis, not an archive.
|
|
221
|
+
|
|
222
|
+
Each seed should open a distinct grammar construct, semantic state, protocol transition, error path,
|
|
223
|
+
or feedback feature. Prefer the shortest and fastest seed that retains that role. Record roles when
|
|
224
|
+
plain edge coverage would merge semantically distinct seeds.
|
|
225
|
+
|
|
226
|
+
Include small valid and invalid seeds. Starting empty can work for simple byte formats, but complex
|
|
227
|
+
grammars and state machines usually waste time relearning reachable prefixes.
|
|
228
|
+
|
|
229
|
+
Build dictionaries from:
|
|
230
|
+
|
|
231
|
+
- grammar terminals and delimiters;
|
|
232
|
+
- magic bytes, versions, extension ids, and enum spellings;
|
|
233
|
+
- field and command names;
|
|
234
|
+
- escape forms and special literals;
|
|
235
|
+
- comparison constants observed in target-owned code; and
|
|
236
|
+
- tokens that intentionally open error families.
|
|
237
|
+
|
|
238
|
+
Every entry must use the selected engine's current dictionary syntax. Huge arbitrary word lists add
|
|
239
|
+
mutation choices without opening structure.
|
|
240
|
+
|
|
241
|
+
Production-derived inputs require sanitization, minimization, and provenance. Remove credentials,
|
|
242
|
+
personal data, customer content, internal hosts, and secrets before version control. Prefer synthetic
|
|
243
|
+
equivalents when they preserve the same feature.
|
|
244
|
+
|
|
245
|
+
Retain every fixed crash, timeout, OOM, discrepancy, and invariant artifact that adds a distinct
|
|
246
|
+
regression. Corpus minimization may remove coverage duplicates, but it must not delete a seed whose
|
|
247
|
+
semantic or state feature is outside the minimizer's observation model.
|
|
248
|
+
|
|
249
|
+
## 7. Streaming, stateful, and failure-injection inputs
|
|
250
|
+
|
|
251
|
+
Encode the full reproduction schedule into the artifact.
|
|
252
|
+
|
|
253
|
+
For streaming, store or derive:
|
|
254
|
+
|
|
255
|
+
- payload bytes;
|
|
256
|
+
- read or chunk sizes, including zero or short chunks;
|
|
257
|
+
- retryable-error insertion points;
|
|
258
|
+
- EOF position and finalization calls;
|
|
259
|
+
- partial-write capacities and flush points; and
|
|
260
|
+
- decoder or parser mode options.
|
|
261
|
+
|
|
262
|
+
Compare one-shot, every short split, biased boundary splits, and randomized chunk schedules. The
|
|
263
|
+
same bytes must have equivalent meaning unless the API contract intentionally exposes delivery
|
|
264
|
+
boundaries.
|
|
265
|
+
|
|
266
|
+
For stateful targets, represent each artifact as an operation or message sequence. Mutate payloads
|
|
267
|
+
and sequence shape separately:
|
|
268
|
+
|
|
269
|
+
- insert, delete, duplicate, reorder, and replay;
|
|
270
|
+
- reconnect, reset, retry, and stale-token reuse;
|
|
271
|
+
- begin, commit, rollback, abort, and partial failure;
|
|
272
|
+
- authentication success and failure using test-owned identities;
|
|
273
|
+
- transport fault, timeout, short write, and disconnect.
|
|
274
|
+
|
|
275
|
+
A response code alone may not identify protocol state. Prefer an explicit stable state enum and
|
|
276
|
+
important flags. If using response or memory-derived state, normalize addresses, timestamps,
|
|
277
|
+
uninitialized padding, transient buffers, random ids, and other high-cardinality noise before
|
|
278
|
+
feature generation.
|
|
279
|
+
|
|
280
|
+
For fault injection, let artifact bytes select the N-th allocation, read, write, flush, commit,
|
|
281
|
+
network, or callback failure. Assert cleanup, rollback, cursor, retry, idempotency, and resource
|
|
282
|
+
release. Do not use random failure timing that cannot be replayed.
|
|
283
|
+
|
|
284
|
+
## 8. Campaign diversity and plateau diagnosis
|
|
285
|
+
|
|
286
|
+
Assign worker or campaign roles by hypothesis:
|
|
287
|
+
|
|
288
|
+
- baseline raw mutation;
|
|
289
|
+
- structured or grammar-aware mutation;
|
|
290
|
+
- repaired-envelope mutation;
|
|
291
|
+
- compare or value barriers;
|
|
292
|
+
- rare-path or directed frontier;
|
|
293
|
+
- stateful sequence exploration;
|
|
294
|
+
- sanitizer or detector axis;
|
|
295
|
+
- release-like optimized replay; and
|
|
296
|
+
- differential implementation or version comparison.
|
|
297
|
+
|
|
298
|
+
Do not assume more identical workers equal more search diversity. Record which lane contributes new
|
|
299
|
+
features and unique defects. Merge useful artifacts through an owned bounded process; avoid turning
|
|
300
|
+
one shared directory into an I/O bottleneck or nondeterministic triage source.
|
|
301
|
+
|
|
302
|
+
When coverage plateaus, inspect the last meaningful frontier and classify the next condition:
|
|
303
|
+
|
|
304
|
+
1. early validation rejects almost everything;
|
|
305
|
+
2. multi-byte comparison blocks progress;
|
|
306
|
+
3. dependent fields are broken by mutation;
|
|
307
|
+
4. payload is hidden by compression, encryption, or signature;
|
|
308
|
+
5. operation or message order is required;
|
|
309
|
+
6. global state or environment makes feedback unstable;
|
|
310
|
+
7. initialization dominates iteration time;
|
|
311
|
+
8. mutation units do not match semantic units;
|
|
312
|
+
9. target code is not instrumented or features collide;
|
|
313
|
+
10. frontier seeds receive too little mutation energy;
|
|
314
|
+
11. semantic progress occurs without a new edge; or
|
|
315
|
+
12. the path is unreachable under supported input.
|
|
316
|
+
|
|
317
|
+
Change the harness, input lane, feedback, seed, or dead-code decision that owns the barrier. Do not
|
|
318
|
+
treat longer runtime or more cores as a universal correction.
|
|
319
|
+
|
|
320
|
+
## 9. Artifact reproduction and bounded regression
|
|
321
|
+
|
|
322
|
+
An artifact record should bind:
|
|
323
|
+
|
|
324
|
+
- target and entrypoint identity;
|
|
325
|
+
- exact source and build identity;
|
|
326
|
+
- sanitizer, detector, oracle, optimization, and architecture axis;
|
|
327
|
+
- raw bytes plus structured decoder version;
|
|
328
|
+
- chunk, operation, environment, and fault schedule;
|
|
329
|
+
- expected normalized failure class;
|
|
330
|
+
- input and resource limits;
|
|
331
|
+
- original and minimized hashes; and
|
|
332
|
+
- triage status and duplicate relationship.
|
|
333
|
+
|
|
334
|
+
Reproduce first in a clean process with the same build. If reproduction fails, inspect prior-input
|
|
335
|
+
state, unjoined work, time, RNG, locale, files, network, heap layout, undefined behavior, and tool
|
|
336
|
+
version before declaring the product fixed or the artifact flaky.
|
|
337
|
+
|
|
338
|
+
Shrink all causal dimensions: bytes, object fields, sequence length, chunk schedule, failure point,
|
|
339
|
+
options, environment, and implementation set. Preserve the failure class or normalized discrepancy,
|
|
340
|
+
not incidental log text.
|
|
341
|
+
|
|
342
|
+
CI or ordinary tests should build the target and replay bounded seed and regression corpora when the
|
|
343
|
+
repository configures those paths. A replay proves historical inputs remain safe; it does not prove
|
|
344
|
+
the current search campaign explored all relevant behavior.
|
|
345
|
+
|
|
346
|
+
Report separately:
|
|
347
|
+
|
|
348
|
+
- harness build and deterministic smoke;
|
|
349
|
+
- seed or regression corpus replay;
|
|
350
|
+
- sanitizer or detector replay;
|
|
351
|
+
- coverage and frontier evidence;
|
|
352
|
+
- bounded CI fuzz smoke;
|
|
353
|
+
- long-running local or external campaign state; and
|
|
354
|
+
- artifact triage and remediation state.
|
|
355
|
+
|
|
356
|
+
## 10. Primary anchors
|
|
357
|
+
|
|
358
|
+
Use these primary sources to refresh tool-specific facts:
|
|
359
|
+
|
|
360
|
+
- [LLVM libFuzzer](https://llvm.org/docs/LibFuzzer.html): narrow deterministic targets, corpus
|
|
361
|
+
mutation and merge, dictionaries, value profiles, limits, artifact minimization, and sanitizer
|
|
362
|
+
integration.
|
|
363
|
+
- [Clang SanitizerCoverage](https://clang.llvm.org/docs/SanitizerCoverage.html): edge and block
|
|
364
|
+
instrumentation, compare and data-flow tracing, and instrumentation allowlists or blocklists.
|
|
365
|
+
- [OSS-Fuzz ideal integration](https://google.github.io/oss-fuzz/advanced-topics/ideal-integration/):
|
|
366
|
+
source-owned targets, minimal seed corpora, dictionaries, sanitizer regression replay, coverage,
|
|
367
|
+
and target performance.
|
|
368
|
+
- [Google structure-aware fuzzing](https://github.com/google/fuzzing/blob/master/docs/structure-aware-fuzzing.md):
|
|
369
|
+
custom mutators, structured intermediate forms, compressed inputs, and stateful API sequences.
|
|
370
|
+
- [AFL++ fuzzing in depth](https://aflplus.plus/docs/fuzzing_in_depth/): instrumentation,
|
|
371
|
+
persistent mode, compare barriers, corpus handling, campaign diversity, and triage.
|
|
372
|
+
- [AFL++ power schedules](https://aflplus.plus/docs/power_schedules/): seed energy and
|
|
373
|
+
low-frequency path strategies.
|
|
374
|
+
- [libprotobuf-mutator](https://github.com/google/libprotobuf-mutator): protobuf-backed structured
|
|
375
|
+
mutation and crossover for libFuzzer-compatible targets.
|
|
376
|
+
- [The HTTP Garden](https://arxiv.org/abs/2405.17737): coverage-guided differential fuzzing of
|
|
377
|
+
request streams and normalized interpretation discrepancies.
|
|
378
|
+
- [StateAFL](https://arxiv.org/abs/2110.06253): multi-message stateful fuzzing and normalized
|
|
379
|
+
long-lived state feedback.
|