← ClaudeAtlas

hunting-bug-variantslisted

Given one confirmed vulnerability, systematically find its siblings: the same defect shape repeated elsewhere in the codebase, and the parts of it the fix left uncovered. Use right after you confirm or read about a bug (your own finding, a CVE, a patch, a writeup) and want the other instances instead of stopping at one. Turns a single seed into a structural signature and sweeps the whole tree for same-shape code, copy-paste clones, sibling handlers, and incomplete fixes. Covers signature extraction, the variant sweep, and adjudicating each candidate.
UnboundCompute/security-agent-skills · ★ 4 · AI & Automation · score 80
Install: claude install-skill UnboundCompute/security-agent-skills
# Hunting bug variants: one seed, every sibling One bug is almost never alone. The same mistake gets copy-pasted, re-implemented by a second author, or left uncovered by a fix that only patched the reported call site. Variant hunting takes a *single confirmed defect* and turns it into a signature you can sweep the whole codebase with, so you find the three other copies before an attacker does. ## When to use - You just confirmed a bug and want its siblings, not a victory lap. - A CVE, advisory, or writeup describes a bug in code you can read. - A fix landed and you want to know whether it covered every instance. - Someone says "we already patched that" and you want to verify it is really gone. ## Scope check Authorized source only (your own, OSS, CTF, in-scope engagement). If you can't name the authorization, stop. ## The loop 1. **Anchor the seed.** State the confirmed defect precisely: the exact sink, the exact missing or wrong step (no bounds check, no authz check, unnormalized path, unescaped context), and the untrusted input that drives it. A vague seed ("there was an injection somewhere") produces a useless sweep. 2. **Extract the shape, not the string.** Abstract the seed into a structural signature that survives renaming and reformatting. Usually one of: *this sink called without that guard*; *this unsafe idiom* (raw concat into a query, `base / user_name` without resolve-and-contain); *this type of value reaching this argument*. Grepping