본문으로 건너뛰기
cccskills
무료GitHub에 공개

fuzzing-obstacles

Use when asked to identify and bypass checksums, nondeterminism, or validation barriers that block fuzzing coverage. Not for dictionary creation: use fuzzing-dictionary. Local writes only.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(3)

  • SKILL.md5.3 KB
  • agents/openai.yaml187 B
  • references/patch-patterns.md1.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Fuzzing obstacles

Contract

FieldBound contract
TriggerUser needs to identify and safely bypass checksums, nondeterminism, or validation barriers that block fuzzing coverage.
AuthorityReversible local: writes only the System Under Test source behind an explicit fuzzing build flag so production behavior is unchanged; rollback is deleting the conditional block or the fuzz build configuration. No remote mutation. Production code path is never altered.
Side effectFuzz-only target behavior behind explicit build controls. No production binary, credential, remote, or published artifact is touched.
DoneThe specific obstacle is bypassed only in fuzz builds, coverage improves over the unpatched baseline, and false-positive risk is assessed.

Not for

  • Dictionary creation for fixed-token gates: use fuzzing-dictionary.
  • Coverage measurement or plateau analysis: use fuzzing-coverage-analysis.
  • Remote, credential, publish, deploy, or irreversible changes.

Inputs

Required:

  • The System Under Test source tree and its build system.
  • A fuzzer harness and coverage tooling already producing a baseline coverage report.

Optional:

  • A seed corpus or dictionary (use these first; only patch when they cannot overcome the obstacle).

Procedure

  1. Identify the obstacle. Run the fuzzer and inspect coverage to locate unreachable code. Look for: checksum or hash verification before deeper processing; calls to rand(), time(), or srand() with system seeds; validation functions that reject most inputs; global-state initialization that differs across runs. Confirm the obstacle cannot be cleared with a better seed corpus or dictionary before patching. Done when: the obstacle is identified and confirmed unclearable by seeds or dictionary.
  2. Add conditional compilation gated on the fuzzing build flag. Wrap the obstacle so it is enforced in production and bypassed only under the fuzzing build mode. See references/patch-patterns.md for C/C++ and Rust bypass patterns. Done when: the obstacle is wrapped behind the fuzzing build flag.
  3. Patch incrementally. Bypass one obstacle at a time. Keep cheap validation (magic bytes, size checks) that guides the fuzzer at low cost; skip only the specific check that blocks coverage. Done when: one obstacle is bypassed and cheap validation is retained.
  4. Provide safe defaults when downstream code assumes validated state. If code after the skipped check depends on a validated property (e.g., a divisor is nonzero), supply a safe fallback value under the fuzzing branch instead of skipping wholesale. See references/patch-patterns.md for the safe-default pattern. Done when: downstream assumptions are satisfied under the fuzzing branch.
  5. Verify coverage improvement. Rebuild with fuzzing instrumentation, run the fuzzer for a short time, and compare line/basic-block/function coverage and corpus diversity against the unpatched baseline. Confirm new code paths are reachable. Done when: coverage improves over the unpatched baseline.
  6. Assess false-positive risk. For each patch, determine whether skipping the check introduces program states impossible in production: does downstream code assume validated properties; could skipping cause crashes that cannot occur in production; is there implicit state dependency. Classify risk (LOW / MEDIUM / MITIGATED) and record it. If risk is high, narrow the patch or restore validation with safe defaults rather than skipping. Done when: each patch has a risk classification with rationale.
  7. Document each patch so the fuzzing-vs-production divergence is visible to future maintainers. Done when: every patch is documented.

Failure and recovery

  • No coverage gain after patching: the patched check was not the real blocker. Revert the conditional block and re-run coverage analysis to find the next obstacle. Do not stack unverified patches.
  • High false-positive rate: skipping the check introduced impossible states. Replace the skip with safe-default fallbacks (step 4) or narrow the bypass to a cheaper sub-check. Re-assess risk before continuing.
  • Production behavior changed: the build flag leaked into a production build path. Stop. The flag must be defined only in the fuzzing build configuration. Roll back the conditional block and fix the build configuration so the flag is absent from production builds.
  • Non-converged: if coverage does not improve and risk cannot be reduced below acceptable, return the obstacle as unresolved with the evidence gathered; do not declare the done predicate holds.

Rollback: delete the conditional compilation block (or remove the fuzz build configuration defining the flag). Because production code is guarded by the negated flag, removing the fuzz branch restores the original behavior with no production-side change.

Output

Conditional-compilation patches in the System Under Test (each gated on the fuzzing build flag and documented), a coverage delta showing improved reachability over the unpatched baseline, and a per-patch false-positive risk classification (LOW / MEDIUM / MITIGATED) with rationale, unresolved obstacles reported as such with evidence rather than marked done.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when explaining System V AMD64, ARM AAPCS, RISC-V psABI, stack frames, variadic calls, or FFI register rules. Not for the Rust FFI binding layer: use rust-ffi.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when configuring ADC sampling time, DMA-driven ADC, calibration, or DAC channel setup on bare-metal MCUs. Not for the DMA stream itself: use dma-baremetal.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

af-xdp

무료

Use when creating AF_XDP sockets, configuring UMEM and XSK rings, writing an XDP redirect program, or choosing copy versus zero-copy mode. Not for full kernel bypass: use dpdk.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when a completed session needs an agent-environment retrospective. Not for an engineering retrospective from telemetry: use engineering-retrospective.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when a redacted, trimmed agent transcript must be appended to a GitHub PR or issue body, with human approval and preview. Not for automated or model-initiated insertion.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

agents-md

무료

Use when a repo needs agent setup, AGENTS.md added or made lean, CLAUDE.md audited, or agent instructions scored or pruned. Not for remote, credential, publish, deploy, or irreversible changes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

OutlineDriven의 스킬 모두 보기

이 스킬의 문제 신고