Systematic methodology for finding novel, undisclosed vulnerabilities in source code, compiled
binaries, and live systems. This skill guides the research process from intelligence gathering
through proof-of-concept development to responsible disclosure.
This is the discovery skill - it finds vulnerabilities nobody has catalogued yet. For
exploiting known weaknesses on live systems, use lockpick. For scanning code against known
vulnerability patterns, use security-audit.
Target versions: September 2026 snapshot. Read references/target-versions.md before
pinning static analysis, reversing, fuzzing, or debugger tooling.
When to use
Hunting for undisclosed vulnerabilities in a codebase, binary, or running service
Variant analysis after a CVE is published (finding similar bugs in related code)
Patch diffing - analyzing what a security update fixed to find nearby issues
Developing proof-of-concept exploits for discovered vulnerabilities
Attack surface mapping before a focused security engagement
Gathering threat intelligence on a target's technology stack
Preparing responsible disclosure reports
Bug bounty target assessment and prioritization
Auditing your own projects for novel vulnerability classes
Hunting for cloud-native vulnerabilities (IAM, IMDS, cross-tenant isolation, serverless)
When NOT to use
Scanning for known vulnerability patterns or OWASP top 10 (use security-audit)
Post-exploitation privilege escalation or lateral movement (use lockpick)
General code correctness review or bug finding (use code-review)
Hardening containers, Kubernetes, or infrastructure (use kubernetes, docker, terraform)
Network firewall configuration or tuning (use firewall-appliance)
Without authorization from the target owner (own repos, bug bounty scope, or written permission)
AI Self-Check
Before reporting any vulnerability or generating exploit code, verify:
Authorization confirmed: own repo, active bug bounty program, or written permission
Scope respected: target is within authorized boundary (specific repos, domains, IPs)
Novel finding: verified this isn't already a known CVE or public advisory (cross-check Phase 0 intelligence gathering - NVD, oss-security, GitHub advisories, searchsploit)
Reproducible: PoC demonstrates the issue reliably, not a theoretical concern
Impact assessed: clear description of what an attacker gains (not just "crash")
Root cause identified: the underlying flaw, not just the symptom
No collateral damage: PoC doesn't destroy data, DoS production, or affect other users
Disclosure plan: findings destined for responsible disclosure, not public dump
Evidence preserved: all analysis steps documented for reproducibility
Complexity honest: if exploitation requires unlikely conditions (specific config, race window, chained bugs), state that clearly - don't inflate impact
PoC safety reviewed: proof code demonstrates impact without avoidable persistence, exfiltration, or wormable behavior, and stays within the authorized disclosure scope
Cross-cutting agent hygiene applied - see references/agent-hygiene.md
Performance
Minimize repro cases before deep fuzzing so crashes triage quickly.
Deduplicate crashes by stack, root cause, and patch reachability before reporting counts.
Use coverage and corpus metrics to guide fuzzing time instead of running blind indefinitely.
Best Practices
Capture exact versions, build flags, inputs, logs, and debugger state for every candidate finding.
Separate exploitability analysis from speculation; mark uncertainty clearly.
Follow the target project's disclosure policy and avoid publishing operational exploit detail prematurely.
Workflow
Phase 0: Intelligence Gathering
Before touching code or binaries, understand what you're looking at and what the community
already knows. This phase determines where to focus.
Advisory and feed monitoring:
# Recent CVEs for a specific product/vendor
# NVD API (no key needed for basic queries)
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?keywordSearch=TARGET_NAME&resultsPerPage=20" | python3 -m json.tool | head -100
# GitHub Security Advisories for a repo
# Adapt ecosystem param: NPM, PIP, GO, MAVEN, NUGET, RUBYGEMS, RUST, etc.
gh api graphql -f query='{ securityVulnerabilities(first:20, ecosystem:NPM, package:"TARGET") { nodes { advisory { summary severity publishedAt } vulnerableVersionRange } } }'
# Exploit-DB search
searchsploit TARGET_NAME 2>/dev/null || echo "searchsploit not installed (apt install exploitdb)"
Community sources to check (use web search):
oss-security mailing list - where researchers post before/alongside CVEs
Full Disclosure - uncoordinated disclosures, PoCs
r/netsec, r/ReverseEngineering, Hacker News - community discussion, writeups, early signal
Project-specific bug trackers - Chromium, Firefox, Linux kernel, etc.
Vendor security bulletins - Microsoft Patch Tuesday, Apple security updates, etc.
Twitter/X - #0day, #bugbounty, researcher accounts, vendor security teams
Unfixed issues in bug trackers marked as security-sensitive
Proceed to Phase 1 when: you have a clear picture of recent CVEs, active research, and
community attention on the target or its ecosystem. If nothing comes up, that's still useful -
it means fewer known attack patterns to build on, so original research matters more.
Phase 1: Target Profiling
Understand the target before looking for bugs. The goal is to build a mental model of the
attack surface.
For source code repos:
# Language and framework breakdown
tokei . 2>/dev/null || (find . -name '*.py' -o -name '*.js' -o -name '*.ts' -o -name '*.c' \
-o -name '*.cpp' -o -name '*.go' -o -name '*.rs' -o -name '*.java' | head -50)
# Dependencies (attack surface via supply chain)
cat package.json requirements.txt go.mod Cargo.toml pom.xml 2>/dev/null | head -80
# Entry points - where external input enters the system
grep -rn 'app\.\(get\|post\|put\|delete\|patch\|use\)\|@app\.route\|@RequestMapping\|func.*http\.Handler\|#\[.*route\]' --include='*.py' --include='*.js' --include='*.ts' --include='*.go' --include='*.rs' --include='*.java' . 2>/dev/null | head -30
# Parser/deserializer locations (high-value targets)
grep -rn 'parse\|deserialize\|unmarshal\|decode\|from_bytes\|read_struct\|unpack' --include='*.py' --include='*.c' --include='*.cpp' --include='*.go' --include='*.rs' . 2>/dev/null | head -30
# Security-sensitive operations
grep -rn 'exec\|system\|popen\|eval\|spawn\|crypto\|encrypt\|decrypt\|hash\|sign\|verify\|auth\|token\|session\|cookie\|jwt' --include='*.py' --include='*.js' --include='*.ts' --include='*.go' --include='*.rs' . 2>/dev/null | head -40
# Git history - recent security-related changes
git log --oneline --all --grep='CVE\|vuln\|security\|fix\|patch\|overflow\|inject\|bypass\|sanitize' | head -20
Language-specific high-value targets (where memory corruption hides in "safe" languages):
Rust: unsafe blocks and FFI boundaries - memory corruption enters here
Go: import "C" (CGo) - C code behind Go interface, plus marshaling bugs
# PE headers and architecture (Visual Studio tools or dumpbin)
dumpbin /headers TARGET.exe | Select-String "machine|subsystem|entry point"
# Security mitigations - use PE-bear, winchecksec, or dumpbin
winchecksec.exe TARGET.exe # shows ASLR, DEP, CFG, ACG, CET, SEH, SafeSEH, GS
# Or manually via dumpbin:
dumpbin /headers TARGET.exe | Select-String "DLL characteristics"
# Look for: DYNAMIC_BASE (ASLR), NX_COMPAT (DEP), GUARD_CF (CFG), HIGH_ENTROPY_VA
# Imports - what DLLs and functions does it call?
dumpbin /imports TARGET.exe | Select-String "kernel32|ntdll|ws2_32|advapi32|shell32"
# Exports (for DLLs)
dumpbin /exports TARGET.dll
Read references/binary-analysis.md (Windows PE Analysis section) for Ghidra PE
import, x64dbg/WinDbg workflows, and Windows mitigation analysis.
For live systems:
# Open ports and services
nmap -sV -sC -p- TARGET_IP 2>/dev/null || ss -tulpn
# Service versions (version-specific vulns)
nmap -sV --version-intensity 5 -p PORTS TARGET_IP 2>/dev/null
# Web application fingerprinting
curl -sI https://TARGET/ | head -20
whatweb TARGET 2>/dev/null
# SSL/TLS analysis
testssl.sh TARGET:443 2>/dev/null || openssl s_client -connect TARGET:443 </dev/null 2>/dev/null | openssl x509 -noout -text | head -30
For cloud-hosted targets, also profile: IAM roles/policies attached to the workload,
metadata service version (IMDSv1 vs v2), managed services in use (RDS, Atlas, MSK, etc.),
cross-account trust relationships, and whether backends are directly reachable or gated
behind an API gateway. See references/vulnerability-classes.md section 9 for full patterns.
Build the attack surface map:
Component
Entry Points
Input Format
Trust Boundary
Priority
[service]
[endpoints]
[JSON/binary/etc]
[auth/unauth]
[H/M/L]
Priority is based on: unauthenticated > authenticated, parser/deserializer > business logic,
network-facing > local-only, complex input formats > simple ones.
Proceed to Phase 2 when: the attack surface map has at least one high-priority entry point.
If everything is low-priority, reconsider whether this target is worth deep analysis.
Phase 2: Vulnerability Class Selection
Based on the target profile, select which vulnerability classes to hunt. Don't search for
everything - pick 2-3 classes most likely to yield results given the target's language,
architecture, and attack surface.
Read references/vulnerability-classes.md for the full catalog organized by:
Web-specific (web apps) - novel XSS (mXSS, DOM clobbering), SSTI, prototype pollution chains, SSRF, path traversal, cache poisoning. For XSS sinks: treat sanitizer config as a taint sink - DOMPurify ALLOWED_TAGS/RETURN_DOM misconfig, custom sanitize() hooks, and React innerHTML injection patterns are common bypasses; a misconfigured sanitizer is itself a sink
Binary-specific (compiled) - format string bugs, heap metadata corruption, ROP/JOP gadget availability, signal handler races
When classes tie: prioritize by exploitability ceiling. Memory corruption and deserialization
yield RCE most reliably. Injection is next. Logic flaws require deeper understanding but produce
the most creative findings - pick these when the target has a complex state machine or multi-step
auth flow.
Proceed to Phase 3 when: you've selected 2-3 vulnerability classes and can articulate why
they fit this target's architecture and attack surface.
Phase 3: Deep Analysis
This is the core of the research. Pick one attack surface from Phase 1 and one vulnerability
class from Phase 2. Go deep, not wide.
If the first pick yields nothing: don't switch both variables at once. Change the
vulnerability class first (same attack surface, different class). If that fails too, change
the attack surface. Switching both simultaneously means you learned nothing from the first
attempt.
Source code - manual taint analysis:
Read references/taint-analysis.md for the full methodology. Summary:
Identify sources - where external/untrusted data enters (HTTP params, file reads, env vars, IPC, database results from user-controlled queries)
Identify sinks - where data causes impact (exec, SQL, file writes, memory operations, crypto operations, response bodies)
Trace every path from source to sink. For each path:
What sanitization/validation exists?
Can the sanitization be bypassed? (encoding tricks, type juggling, truncation)
Are there paths that skip sanitization entirely? (error handlers, fallback paths, admin routes)
Does the data pass through a transformation that changes its security properties? (base64, URL encoding, serialization)
Source code - variant analysis:
When a CVE is published for a component you're reviewing:
Read the advisory and patch diff
Identify the root cause pattern (not just the specific instance)
Search the codebase for the same pattern:
# CodeQL (if available) - write a query for the pattern
codeql query run --database=TARGET_DB path/to/variant-query.ql
# Semgrep - write a custom rule
semgrep --config path/to/variant-rule.yaml .
# Joern (code property graph) - query for dataflow pattern
joern --script path/to/variant-query.sc
# Manual grep for structural similarity
grep -rn 'PATTERN' --include='*.EXT' . | head -30
For each match, determine if the same exploit conditions exist
Binary analysis:
Read references/binary-analysis.md for the full methodology covering:
Static analysis - Ghidra/Rizin decompilation, function identification, cross-references
Patch diffing - BinDiff/Diaphora to compare pre-patch and post-patch binaries, identify fixed functions, understand the vulnerability class
Fuzzing - AFL++ harness writing, corpus selection, crash triage
System analysis:
Map every externally reachable service
Identify service versions and check for recent patches (recently patched = variant analysis target)
Examine custom/non-standard services more closely (less audited = more likely to have bugs)
Check for misconfigurations that expand attack surface (debug endpoints, unnecessary services, permissive CORS)
Hand off to lockpick if you find an exploitable vulnerability and want to demonstrate impact on the live system
Cloud-native analysis:
Read references/vulnerability-classes.md section 9 for the full catalog. Key methodology:
Enumerate IAM - map roles, policies, and trust relationships. Look for sts:AssumeRole
without ExternalId, wildcard permissions, and dangerous combos (iam:PassRole + service creation)
Test IMDS reachability - from every SSRF-capable endpoint, attempt metadata access.
Check IMDSv1 vs v2 enforcement. Even partial SSRF (no response body) can leak via DNS
Probe managed service isolation - can tenant A's credentials reach tenant B's resources?
Test across RDS instances, Kafka topics, K8s namespaces, S3 buckets
Audit serverless event sources - Lambda/Cloud Function triggers (S3, SNS, API Gateway,
Kafka) pass event payloads as untrusted input. Trace from event to sink like any other taint analysis
Check for direct backend access - bypass API gateways by hitting the backend service
URL directly. Many "protected" APIs are only protected by the gateway, not the service itself
Proceed to Phase 4 when: you have a specific, reproducible trigger condition for a
vulnerability. "This buffer can overflow" is not enough - you need the exact input or sequence
that causes it.
Phase 4: Proof of Concept
A vulnerability without a PoC is a theory. Build one.
PoC requirements:
Triggers the vulnerability reliably (not "sometimes crashes")
Demonstrates security impact (code execution, data leak, auth bypass - not just a crash dump)
Minimal - smallest possible input/sequence that triggers the bug
Self-contained - another researcher can reproduce it without your environment
Non-destructive - doesn't delete data, DoS production, or cause lasting damage
Before investing in a full exploit, check mitigations (checksec / winchecksec). Full
RELRO + PIE + canary + NX + CFI makes RCE impractical for most targets. A controlled crash
or info leak PoC is still valuable for disclosure.
PoC development patterns by vulnerability class:
Read references/exploit-patterns.md for detailed PoC templates covering:
Memory corruption - crafted input to trigger overflow, heap spray for reliability, ROP chain for code execution
Injection - payload that demonstrates data exfiltration or command execution
Logic flaw - step-by-step request sequence that bypasses intended controls
Deserialization - crafted serialized object with gadget chain
Crypto - script that recovers key material or forges signatures
SSRF/path traversal - request that reads internal resources or sensitive files
Cloud/IAM - demonstrate credential theft via IMDS, cross-tenant access, or privilege escalation via IAM policy chain
Testing the PoC:
Run against a local/lab copy of the target, never production
Verify it works on the latest unpatched version
Verify it fails on the patched version (if a patch exists)
Document exact versions, configurations, and prerequisites
Proceed to Phase 5 when: the PoC reliably demonstrates the vulnerability on the target
version in a lab environment.
Phase 5: Impact Assessment & Reporting
Assess impact using CVSS 4.0 base metrics:
Metric
Question
Attack Vector
Network, adjacent, local, or physical?
Attack Complexity
Any special conditions needed?
Privileges Required
None, low, or high?
User Interaction
None, passive, or active?
Confidentiality
None, low, or high impact?
Integrity
None, low, or high impact?
Availability
None, low, or high impact?
CVSS 4.0 also adds Subsequent System metrics (impact beyond the vulnerable component) and
Supplemental metrics (Automatable, Recovery, Provider Urgency). Include these when the
vulnerability affects systems beyond the immediate target.
# [TITLE]: [Brief description]
## Summary
[1-2 sentences: what the vulnerability is and why it matters]
## Affected Versions
- [product] [version range]
- Confirmed on: [exact version tested]
## Root Cause
[Technical explanation of the underlying flaw]
## Attack Scenario
[Step-by-step description of how an attacker exploits this]
## Proof of Concept
[Minimal reproduction steps or script]
## Impact
- CVSS 4.0 Base Score: [score] ([vector string])
- [What an attacker gains: RCE, data leak, auth bypass, DoS, etc.]
## Suggested Fix
[Recommended remediation approach]
## Timeline
- [date] - Vulnerability discovered
- [date] - Vendor notified via [channel]
- [date] - Vendor acknowledged
- [date] - Patch released (pending)
- [date] - Public disclosure (coordinated)
## Credit
[Researcher name/handle]
Responsible disclosure timeline:
Notify the vendor/maintainer immediately after confirming the vulnerability
Standard disclosure window: 90 days (Google Project Zero standard)
For actively exploited vulns: 7 days (expedited)
If vendor is unresponsive after 90 days: disclose with full details
Always check if the project has a SECURITY.md or security policy first
Tooling Quick Reference
Read references/tooling-quick-reference.md for the tool catalog, install paths,
and when to reach for each tool during source, binary, or live-system analysis.
Reference Files
references/vulnerability-classes.md - full vulnerability class catalog with detection patterns, common root causes, language-specific variants, and novel web vectors (mXSS, DOM clobbering, SSTI by engine, prototype pollution gadget chains)
references/taint-analysis.md - manual data flow analysis methodology for source code, with worked examples per language
references/exploit-patterns.md - proof-of-concept development templates by vulnerability class, with safety guidelines
references/tooling-quick-reference.md - tool catalog with install paths and best-fit usage notes
references/target-versions.md - September 2026 version snapshot for static analysis, reversing, fuzzing, and debugger tools
Output Contract
See references/output-contract.md for the full contract.
Skill name: ZERO-DAY
Deliverable bucket:audits
Mode: conditional. When invoked to analyze, review, audit, or improve existing repo content, emit the full contract - monospace inline header, severity-grouped inline summary, linked Markdown deliverable, and concise monospace conclusion - and write the deliverable to docs/local/audits/zero-day/<YYYY-MM-DD>-<slug>.md. When invoked to answer a question, teach a concept, build a new artifact, or generate content, respond freely without the contract.
Severity scale:P0 | P1 | P2 | P3 | info (see shared contract; only used in audit/review mode).
Related Skills
security-audit - scans for known vulnerability patterns (OWASP, CVEs, misconfigs) using automated tools. Zero-day finds novel vulnerabilities through deep manual analysis. Use security-audit for breadth; use zero-day for depth. If security-audit finds something interesting, zero-day can investigate whether it's the tip of a larger iceberg.
lockpick - exploits vulnerabilities on live systems for privilege escalation and lateral movement. Zero-day discovers the vulnerabilities. Use zero-day to find the bug, lockpick to demonstrate exploitation on a live target. Zero-day's system mode hands off to lockpick once a vulnerability is confirmed.
code-review - finds correctness bugs (logic errors, race conditions). Zero-day finds security-relevant logic flaws. Overlap: a race condition is both a bug and potentially a vulnerability. Zero-day owns it when exploitability is the question.
networking - configures and troubleshoots network services. Zero-day may analyze these services for vulnerabilities but doesn't configure them.
Rules
Authorization is non-negotiable. Every target requires explicit authorization: own repos, active bug bounty programs with published scope, or written permission from the system owner. "It's open source" does not mean "I can attack their infrastructure."
Responsible disclosure by default. Findings go to the vendor/maintainer first. Follow the project's SECURITY.md if one exists. Standard 90-day disclosure window. Never drop 0-day publicly without giving the vendor a chance to patch.
PoC must be non-destructive. Proof of concepts demonstrate the vulnerability without causing lasting damage. No data destruction, no persistent backdoors, no denial of service against production systems.
Depth over breadth. Pick a specific attack surface and vulnerability class. Go deep. A thorough analysis of one parser beats a shallow scan of the whole codebase. Automated scanning is security-audit's job.
Verify before reporting. Every claimed vulnerability must have a working PoC or a clear, reproducible trigger condition. Theoretical vulnerabilities get noted internally, not reported externally.
Document the research process. Record what you analyzed, what you tried, and what you ruled out. Future researchers (including yourself) need this context for variant analysis.
Lab before production. All dynamic testing, fuzzing, and PoC execution happens on local copies or dedicated lab environments. Never fuzz or exploit production systems.
Hand off correctly. Once a vulnerability is confirmed and you want to demonstrate exploitation on a live authorized system, hand off to lockpick. Once you want to scan broadly for known patterns, hand off to security-audit.
1---2name: zero-day3description: · Hunt novel vulnerabilities via reversing, patch diffs, fuzzing, and PoCs. Triggers: 'zero-day', '0-day', 'vulnerability research', 'CVE variant analysis', 'patch diffing', 'n-day variant', 'fuzz', 'exploit dev'. Not SAST: security-audit.4license: MIT5---67# Zero-Day: Vulnerability Research & Discovery89Systematic methodology for finding novel, undisclosed vulnerabilities in source code, compiled10binaries, and live systems. This skill guides the research process from intelligence gathering11through proof-of-concept development to responsible disclosure.1213This is the *discovery* skill - it finds vulnerabilities nobody has catalogued yet. For14exploiting known weaknesses on live systems, use **lockpick**. For scanning code against known15vulnerability patterns, use **security-audit**.1617**Target versions**: September 2026 snapshot. Read `references/target-versions.md` before18pinning static analysis, reversing, fuzzing, or debugger tooling.1920## When to use2122- Hunting for undisclosed vulnerabilities in a codebase, binary, or running service23- Variant analysis after a CVE is published (finding similar bugs in related code)24- Patch diffing - analyzing what a security update fixed to find nearby issues25- Developing proof-of-concept exploits for discovered vulnerabilities26- Attack surface mapping before a focused security engagement27- Gathering threat intelligence on a target's technology stack28- Preparing responsible disclosure reports29- Bug bounty target assessment and prioritization30- Auditing your own projects for novel vulnerability classes31- Hunting for cloud-native vulnerabilities (IAM, IMDS, cross-tenant isolation, serverless)3233## When NOT to use3435- Scanning for known vulnerability patterns or OWASP top 10 (use **security-audit**)36- Post-exploitation privilege escalation or lateral movement (use **lockpick**)37- General code correctness review or bug finding (use **code-review**)38- Hardening containers, Kubernetes, or infrastructure (use **kubernetes**, **docker**, **terraform**)39- Network firewall configuration or tuning (use **firewall-appliance**)40- Without authorization from the target owner (own repos, bug bounty scope, or written permission)4142## AI Self-Check4344Before reporting any vulnerability or generating exploit code, verify:4546- [ ] **Authorization confirmed**: own repo, active bug bounty program, or written permission47- [ ] **Scope respected**: target is within authorized boundary (specific repos, domains, IPs)48- [ ] **Novel finding**: verified this isn't already a known CVE or public advisory (cross-check Phase 0 intelligence gathering - NVD, oss-security, GitHub advisories, searchsploit)49- [ ] **Reproducible**: PoC demonstrates the issue reliably, not a theoretical concern50- [ ] **Impact assessed**: clear description of what an attacker gains (not just "crash")51- [ ] **Root cause identified**: the underlying flaw, not just the symptom52- [ ] **No collateral damage**: PoC doesn't destroy data, DoS production, or affect other users53- [ ] **Disclosure plan**: findings destined for responsible disclosure, not public dump54- [ ] **Evidence preserved**: all analysis steps documented for reproducibility55- [ ] **Complexity honest**: if exploitation requires unlikely conditions (specific config, race window, chained bugs), state that clearly - don't inflate impact56- [ ] **PoC safety reviewed**: proof code demonstrates impact without avoidable persistence, exfiltration, or wormable behavior, and stays within the authorized disclosure scope57- [ ] Cross-cutting agent hygiene applied - see `references/agent-hygiene.md`5859## Performance6061- Minimize repro cases before deep fuzzing so crashes triage quickly.62- Deduplicate crashes by stack, root cause, and patch reachability before reporting counts.63- Use coverage and corpus metrics to guide fuzzing time instead of running blind indefinitely.6465## Best Practices6667- Capture exact versions, build flags, inputs, logs, and debugger state for every candidate finding.68- Separate exploitability analysis from speculation; mark uncertainty clearly.69- Follow the target project's disclosure policy and avoid publishing operational exploit detail prematurely.7071## Workflow7273### Phase 0: Intelligence Gathering7475Before touching code or binaries, understand what you're looking at and what the community76already knows. This phase determines where to focus.7778**Advisory and feed monitoring:**7980```bash81# Recent CVEs for a specific product/vendor82# NVD API (no key needed for basic queries)83curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?keywordSearch=TARGET_NAME&resultsPerPage=20" | python3 -m json.tool | head -1008485# GitHub Security Advisories for a repo86# Adapt ecosystem param: NPM, PIP, GO, MAVEN, NUGET, RUBYGEMS, RUST, etc.87gh api graphql -f query='{ securityVulnerabilities(first:20, ecosystem:NPM, package:"TARGET") { nodes { advisory { summary severity publishedAt } vulnerableVersionRange } } }'8889# Exploit-DB search90searchsploit TARGET_NAME 2>/dev/null || echo "searchsploit not installed (apt install exploitdb)"91```9293**Community sources to check** (use web search):94- **oss-security mailing list** - where researchers post before/alongside CVEs95- **Full Disclosure** - uncoordinated disclosures, PoCs96- **r/netsec**, **r/ReverseEngineering**, **Hacker News** - community discussion, writeups, early signal97- **Project-specific bug trackers** - Chromium, Firefox, Linux kernel, etc.98- **Vendor security bulletins** - Microsoft Patch Tuesday, Apple security updates, etc.99- **Twitter/X** - #0day, #bugbounty, researcher accounts, vendor security teams100101**What to extract:**102- Recently patched vulnerability classes (variant analysis targets)103- Components receiving security attention (hot areas)104- Researcher writeups describing methodology (technique inspiration)105- Unfixed issues in bug trackers marked as security-sensitive106107**Proceed to Phase 1 when:** you have a clear picture of recent CVEs, active research, and108community attention on the target or its ecosystem. If nothing comes up, that's still useful -109it means fewer known attack patterns to build on, so original research matters more.110111### Phase 1: Target Profiling112113Understand the target before looking for bugs. The goal is to build a mental model of the114attack surface.115116**For source code repos:**117118```bash119# Language and framework breakdown120tokei . 2>/dev/null || (find . -name '*.py' -o -name '*.js' -o -name '*.ts' -o -name '*.c' \121 -o -name '*.cpp' -o -name '*.go' -o -name '*.rs' -o -name '*.java' | head -50)122123# Dependencies (attack surface via supply chain)124cat package.json requirements.txt go.mod Cargo.toml pom.xml 2>/dev/null | head -80125126# Entry points - where external input enters the system127grep -rn 'app\.\(get\|post\|put\|delete\|patch\|use\)\|@app\.route\|@RequestMapping\|func.*http\.Handler\|#\[.*route\]' --include='*.py' --include='*.js' --include='*.ts' --include='*.go' --include='*.rs' --include='*.java' . 2>/dev/null | head -30128129# Parser/deserializer locations (high-value targets)130grep -rn 'parse\|deserialize\|unmarshal\|decode\|from_bytes\|read_struct\|unpack' --include='*.py' --include='*.c' --include='*.cpp' --include='*.go' --include='*.rs' . 2>/dev/null | head -30131132# Security-sensitive operations133grep -rn 'exec\|system\|popen\|eval\|spawn\|crypto\|encrypt\|decrypt\|hash\|sign\|verify\|auth\|token\|session\|cookie\|jwt' --include='*.py' --include='*.js' --include='*.ts' --include='*.go' --include='*.rs' . 2>/dev/null | head -40134135# Git history - recent security-related changes136git log --oneline --all --grep='CVE\|vuln\|security\|fix\|patch\|overflow\|inject\|bypass\|sanitize' | head -20137```138139**Language-specific high-value targets** (where memory corruption hides in "safe" languages):140- **Rust**: `unsafe` blocks and FFI boundaries - memory corruption enters here141- **Go**: `import "C"` (CGo) - C code behind Go interface, plus marshaling bugs142- **Java**: `native` methods (JNI) - C/C++ code callable from managed code143144**For binaries (Linux/macOS):**145146```bash147# File type and architecture148file TARGET_BINARY149readelf -h TARGET_BINARY 2>/dev/null || otool -h TARGET_BINARY 2>/dev/null150151# Security mitigations in place152checksec --file=TARGET_BINARY 2>/dev/null || (153 readelf -l TARGET_BINARY 2>/dev/null | grep -i 'GNU_STACK\|GNU_RELRO'154 readelf -d TARGET_BINARY 2>/dev/null | grep -i 'BIND_NOW\|FLAGS'155)156157# Linked libraries (attack surface)158ldd TARGET_BINARY 2>/dev/null || otool -L TARGET_BINARY 2>/dev/null159160# Strings - low-hanging fruit (URLs, paths, format strings, debug messages)161strings -n 8 TARGET_BINARY | grep -iE 'http://\|https://\|/tmp/\|/etc/\|password\|key\|token\|%s\|%d\|%x\|%n\|debug\|error\|fail' | head -40162163# Symbols (if not stripped)164nm -D TARGET_BINARY 2>/dev/null | grep -i 'malloc\|free\|strcpy\|strcat\|sprintf\|gets\|system\|exec\|popen' | head -20165166# Imports/exports167readelf -s TARGET_BINARY 2>/dev/null | grep -v 'UND\|LOCAL' | head -30168```169170**For binaries (Windows PE):**171172```powershell173# PE headers and architecture (Visual Studio tools or dumpbin)174dumpbin /headers TARGET.exe | Select-String "machine|subsystem|entry point"175176# Security mitigations - use PE-bear, winchecksec, or dumpbin177winchecksec.exe TARGET.exe # shows ASLR, DEP, CFG, ACG, CET, SEH, SafeSEH, GS178# Or manually via dumpbin:179dumpbin /headers TARGET.exe | Select-String "DLL characteristics"180# Look for: DYNAMIC_BASE (ASLR), NX_COMPAT (DEP), GUARD_CF (CFG), HIGH_ENTROPY_VA181182# Imports - what DLLs and functions does it call?183dumpbin /imports TARGET.exe | Select-String "kernel32|ntdll|ws2_32|advapi32|shell32"184185# Exports (for DLLs)186dumpbin /exports TARGET.dll187```188189Read `references/binary-analysis.md` (Windows PE Analysis section) for Ghidra PE190import, x64dbg/WinDbg workflows, and Windows mitigation analysis.191192**For live systems:**193194```bash195# Open ports and services196nmap -sV -sC -p- TARGET_IP 2>/dev/null || ss -tulpn197198# Service versions (version-specific vulns)199nmap -sV --version-intensity 5 -p PORTS TARGET_IP 2>/dev/null200201# Web application fingerprinting202curl -sI https://TARGET/ | head -20203whatweb TARGET 2>/dev/null204205# SSL/TLS analysis206testssl.sh TARGET:443 2>/dev/null || openssl s_client -connect TARGET:443 </dev/null 2>/dev/null | openssl x509 -noout -text | head -30207```208209**For cloud-hosted targets**, also profile: IAM roles/policies attached to the workload,210metadata service version (IMDSv1 vs v2), managed services in use (RDS, Atlas, MSK, etc.),211cross-account trust relationships, and whether backends are directly reachable or gated212behind an API gateway. See `references/vulnerability-classes.md` section 9 for full patterns.213214**Build the attack surface map:**215216| Component | Entry Points | Input Format | Trust Boundary | Priority |217|-----------|-------------|--------------|----------------|----------|218| [service] | [endpoints] | [JSON/binary/etc] | [auth/unauth] | [H/M/L] |219220Priority is based on: unauthenticated > authenticated, parser/deserializer > business logic,221network-facing > local-only, complex input formats > simple ones.222223**Proceed to Phase 2 when:** the attack surface map has at least one high-priority entry point.224If everything is low-priority, reconsider whether this target is worth deep analysis.225226### Phase 2: Vulnerability Class Selection227228Based on the target profile, select which vulnerability classes to hunt. Don't search for229everything - pick 2-3 classes most likely to yield results given the target's language,230architecture, and attack surface.231232Read `references/vulnerability-classes.md` for the full catalog organized by:2332341. **Memory corruption** (C/C++, unsafe Rust, CGo) - buffer overflows, use-after-free, double-free, integer overflow/underflow, type confusion, uninitialized memory2352. **Injection** (all languages) - SQL, command, LDAP, template, header, CRLF, expression language2363. **Logic flaws** (all languages) - authentication bypass, authorization gaps, race conditions (TOCTOU), state machine violations, business logic abuse2374. **Deserialization** (Java, Python, PHP, .NET, Ruby) - insecure deserialization, gadget chains, type confusion via polymorphism2385. **Cryptographic** (all languages) - weak algorithms, nonce reuse, padding oracles, timing side channels, key management errors2396. **Web-specific** (web apps) - novel XSS (mXSS, DOM clobbering), SSTI, prototype pollution chains, SSRF, path traversal, cache poisoning. For XSS sinks: treat sanitizer config as a taint sink - DOMPurify `ALLOWED_TAGS`/`RETURN_DOM` misconfig, custom `sanitize()` hooks, and React innerHTML injection patterns are common bypasses; a misconfigured sanitizer is itself a sink2407. **Binary-specific** (compiled) - format string bugs, heap metadata corruption, ROP/JOP gadget availability, signal handler races2418. **Supply chain** (all ecosystems) - dependency confusion, typosquatting, compromised maintainer accounts, malicious updates2429. **Cloud-native** (AWS, GCP, Azure, managed services) - IMDS abuse, IAM confused deputy, cross-tenant isolation failures, serverless event injection, managed DB/Kafka misconfigs243244**Selection heuristic:**245- C/C++ binary -> memory corruption first, always246- Web app (any language) -> logic flaws + web-specific (mXSS, SSTI, prototype pollution) + injection247- Java/Python service -> deserialization + logic flaws248- Crypto library or auth system -> cryptographic + logic flaws249- Complex parser/protocol -> memory corruption (if C/C++) or logic flaws (if managed language)250- Project with large dependency tree -> supply chain + injection251- Cloud-hosted app/service -> cloud-native + logic flaws (IAM, isolation, metadata)252253**When classes tie:** prioritize by exploitability ceiling. Memory corruption and deserialization254yield RCE most reliably. Injection is next. Logic flaws require deeper understanding but produce255the most creative findings - pick these when the target has a complex state machine or multi-step256auth flow.257258**Proceed to Phase 3 when:** you've selected 2-3 vulnerability classes and can articulate why259they fit this target's architecture and attack surface.260261### Phase 3: Deep Analysis262263This is the core of the research. Pick one attack surface from Phase 1 and one vulnerability264class from Phase 2. Go deep, not wide.265266**If the first pick yields nothing:** don't switch both variables at once. Change the267vulnerability class first (same attack surface, different class). If that fails too, change268the attack surface. Switching both simultaneously means you learned nothing from the first269attempt.270271**Source code - manual taint analysis:**272273Read `references/taint-analysis.md` for the full methodology. Summary:2742751. Identify **sources** - where external/untrusted data enters (HTTP params, file reads, env vars, IPC, database results from user-controlled queries)2762. Identify **sinks** - where data causes impact (exec, SQL, file writes, memory operations, crypto operations, response bodies)2773. Trace every path from source to sink. For each path:278 - What sanitization/validation exists?279 - Can the sanitization be bypassed? (encoding tricks, type juggling, truncation)280 - Are there paths that skip sanitization entirely? (error handlers, fallback paths, admin routes)281 - Does the data pass through a transformation that changes its security properties? (base64, URL encoding, serialization)282283**Source code - variant analysis:**284285When a CVE is published for a component you're reviewing:2862871. Read the advisory and patch diff2882. Identify the *root cause pattern* (not just the specific instance)2893. Search the codebase for the same pattern:290291```bash292# CodeQL (if available) - write a query for the pattern293codeql query run --database=TARGET_DB path/to/variant-query.ql294295# Semgrep - write a custom rule296semgrep --config path/to/variant-rule.yaml .297298# Joern (code property graph) - query for dataflow pattern299joern --script path/to/variant-query.sc300301# Manual grep for structural similarity302grep -rn 'PATTERN' --include='*.EXT' . | head -30303```3043054. For each match, determine if the same exploit conditions exist306307**Binary analysis:**308309Read `references/binary-analysis.md` for the full methodology covering:3103111. **Static analysis** - Ghidra/Rizin decompilation, function identification, cross-references3122. **Patch diffing** - BinDiff/Diaphora to compare pre-patch and post-patch binaries, identify fixed functions, understand the vulnerability class3133. **Dynamic analysis** - GDB/LLDB debugging, strace/ltrace syscall tracing, input/output observation3144. **Fuzzing** - AFL++ harness writing, corpus selection, crash triage315316**System analysis:**3173181. Map every externally reachable service3192. Identify service versions and check for *recent patches* (recently patched = variant analysis target)3203. Examine custom/non-standard services more closely (less audited = more likely to have bugs)3214. Check for misconfigurations that *expand* attack surface (debug endpoints, unnecessary services, permissive CORS)3225. Hand off to **lockpick** if you find an exploitable vulnerability and want to demonstrate impact on the live system323324**Cloud-native analysis:**325326Read `references/vulnerability-classes.md` section 9 for the full catalog. Key methodology:3273281. **Enumerate IAM** - map roles, policies, and trust relationships. Look for `sts:AssumeRole`329 without `ExternalId`, wildcard permissions, and dangerous combos (`iam:PassRole` + service creation)3302. **Test IMDS reachability** - from every SSRF-capable endpoint, attempt metadata access.331 Check IMDSv1 vs v2 enforcement. Even partial SSRF (no response body) can leak via DNS3323. **Probe managed service isolation** - can tenant A's credentials reach tenant B's resources?333 Test across RDS instances, Kafka topics, K8s namespaces, S3 buckets3344. **Audit serverless event sources** - Lambda/Cloud Function triggers (S3, SNS, API Gateway,335 Kafka) pass event payloads as untrusted input. Trace from event to sink like any other taint analysis3365. **Check for direct backend access** - bypass API gateways by hitting the backend service337 URL directly. Many "protected" APIs are only protected by the gateway, not the service itself338339**Proceed to Phase 4 when:** you have a specific, reproducible trigger condition for a340vulnerability. "This buffer can overflow" is not enough - you need the exact input or sequence341that causes it.342343### Phase 4: Proof of Concept344345A vulnerability without a PoC is a theory. Build one.346347**PoC requirements:**348- Triggers the vulnerability reliably (not "sometimes crashes")349- Demonstrates security impact (code execution, data leak, auth bypass - not just a crash dump)350- Minimal - smallest possible input/sequence that triggers the bug351- Self-contained - another researcher can reproduce it without your environment352- Non-destructive - doesn't delete data, DoS production, or cause lasting damage353354Before investing in a full exploit, check mitigations (`checksec` / `winchecksec`). Full355RELRO + PIE + canary + NX + CFI makes RCE impractical for most targets. A controlled crash356or info leak PoC is still valuable for disclosure.357358**PoC development patterns by vulnerability class:**359360Read `references/exploit-patterns.md` for detailed PoC templates covering:3613621. **Memory corruption** - crafted input to trigger overflow, heap spray for reliability, ROP chain for code execution3632. **Injection** - payload that demonstrates data exfiltration or command execution3643. **Logic flaw** - step-by-step request sequence that bypasses intended controls3654. **Deserialization** - crafted serialized object with gadget chain3665. **Crypto** - script that recovers key material or forges signatures3676. **SSRF/path traversal** - request that reads internal resources or sensitive files3687. **Cloud/IAM** - demonstrate credential theft via IMDS, cross-tenant access, or privilege escalation via IAM policy chain369370**Testing the PoC:**371- Run against a local/lab copy of the target, never production372- Verify it works on the latest unpatched version373- Verify it fails on the patched version (if a patch exists)374- Document exact versions, configurations, and prerequisites375376**Proceed to Phase 5 when:** the PoC reliably demonstrates the vulnerability on the target377version in a lab environment.378379### Phase 5: Impact Assessment & Reporting380381**Assess impact using CVSS 4.0 base metrics:**382383| Metric | Question |384|--------|----------|385| Attack Vector | Network, adjacent, local, or physical? |386| Attack Complexity | Any special conditions needed? |387| Privileges Required | None, low, or high? |388| User Interaction | None, passive, or active? |389| Confidentiality | None, low, or high impact? |390| Integrity | None, low, or high impact? |391| Availability | None, low, or high impact? |392393CVSS 4.0 also adds Subsequent System metrics (impact beyond the vulnerable component) and394Supplemental metrics (Automatable, Recovery, Provider Urgency). Include these when the395vulnerability affects systems beyond the immediate target.396397Use the FIRST CVSS calculator: https://www.first.org/cvss/calculator/4.0398399**Write the vulnerability report:**400401```markdown402# [TITLE]: [Brief description]403404## Summary405[1-2 sentences: what the vulnerability is and why it matters]406407## Affected Versions408- [product] [version range]409- Confirmed on: [exact version tested]410411## Root Cause412[Technical explanation of the underlying flaw]413414## Attack Scenario415[Step-by-step description of how an attacker exploits this]416417## Proof of Concept418[Minimal reproduction steps or script]419420## Impact421- CVSS 4.0 Base Score: [score] ([vector string])422- [What an attacker gains: RCE, data leak, auth bypass, DoS, etc.]423424## Suggested Fix425[Recommended remediation approach]426427## Timeline428- [date] - Vulnerability discovered429- [date] - Vendor notified via [channel]430- [date] - Vendor acknowledged431- [date] - Patch released (pending)432- [date] - Public disclosure (coordinated)433434## Credit435[Researcher name/handle]436```437438**Responsible disclosure timeline:**439- Notify the vendor/maintainer immediately after confirming the vulnerability440- Standard disclosure window: 90 days (Google Project Zero standard)441- For actively exploited vulns: 7 days (expedited)442- If vendor is unresponsive after 90 days: disclose with full details443- Always check if the project has a `SECURITY.md` or security policy first444445## Tooling Quick Reference446447Read `references/tooling-quick-reference.md` for the tool catalog, install paths,448and when to reach for each tool during source, binary, or live-system analysis.449450## Reference Files451452- `references/vulnerability-classes.md` - full vulnerability class catalog with detection patterns, common root causes, language-specific variants, and novel web vectors (mXSS, DOM clobbering, SSTI by engine, prototype pollution gadget chains)453- `references/taint-analysis.md` - manual data flow analysis methodology for source code, with worked examples per language454- `references/binary-analysis.md` - binary reverse engineering workflow, patch diffing, fuzzing harness development, dynamic analysis455- `references/exploit-patterns.md` - proof-of-concept development templates by vulnerability class, with safety guidelines456- `references/tooling-quick-reference.md` - tool catalog with install paths and best-fit usage notes457- `references/target-versions.md` - September 2026 version snapshot for static analysis, reversing, fuzzing, and debugger tools458459## Output Contract460461See `references/output-contract.md` for the full contract.462463- **Skill name:** ZERO-DAY464- **Deliverable bucket:** `audits`465- **Mode:** conditional. When invoked to **analyze, review, audit, or improve** existing repo content, emit the full contract - monospace inline header, severity-grouped inline summary, linked Markdown deliverable, and concise monospace conclusion - and write the deliverable to `docs/local/audits/zero-day/<YYYY-MM-DD>-<slug>.md`. When invoked to **answer a question, teach a concept, build a new artifact, or generate content**, respond freely without the contract.466- **Severity scale:** `P0 | P1 | P2 | P3 | info` (see shared contract; only used in audit/review mode).467468## Related Skills469470- **security-audit** - scans for *known* vulnerability patterns (OWASP, CVEs, misconfigs) using automated tools. Zero-day finds *novel* vulnerabilities through deep manual analysis. Use security-audit for breadth; use zero-day for depth. If security-audit finds something interesting, zero-day can investigate whether it's the tip of a larger iceberg.471- **lockpick** - exploits vulnerabilities on *live systems* for privilege escalation and lateral movement. Zero-day *discovers* the vulnerabilities. Use zero-day to find the bug, lockpick to demonstrate exploitation on a live target. Zero-day's system mode hands off to lockpick once a vulnerability is confirmed.472- **code-review** - finds correctness bugs (logic errors, race conditions). Zero-day finds *security-relevant* logic flaws. Overlap: a race condition is both a bug and potentially a vulnerability. Zero-day owns it when exploitability is the question.473- **networking** - configures and troubleshoots network services. Zero-day may analyze these services for vulnerabilities but doesn't configure them.474475## Rules4764771. **Authorization is non-negotiable.** Every target requires explicit authorization: own repos, active bug bounty programs with published scope, or written permission from the system owner. "It's open source" does not mean "I can attack their infrastructure."4782. **Responsible disclosure by default.** Findings go to the vendor/maintainer first. Follow the project's `SECURITY.md` if one exists. Standard 90-day disclosure window. Never drop 0-day publicly without giving the vendor a chance to patch.4793. **PoC must be non-destructive.** Proof of concepts demonstrate the vulnerability without causing lasting damage. No data destruction, no persistent backdoors, no denial of service against production systems.4804. **Depth over breadth.** Pick a specific attack surface and vulnerability class. Go deep. A thorough analysis of one parser beats a shallow scan of the whole codebase. Automated scanning is security-audit's job.4815. **Verify before reporting.** Every claimed vulnerability must have a working PoC or a clear, reproducible trigger condition. Theoretical vulnerabilities get noted internally, not reported externally.4826. **Document the research process.** Record what you analyzed, what you tried, and what you ruled out. Future researchers (including yourself) need this context for variant analysis.4837. **Lab before production.** All dynamic testing, fuzzing, and PoC execution happens on local copies or dedicated lab environments. Never fuzz or exploit production systems.4848. **Hand off correctly.** Once a vulnerability is confirmed and you want to demonstrate exploitation on a live authorized system, hand off to **lockpick**. Once you want to scan broadly for known patterns, hand off to **security-audit**.
Run npx skillmds@latest add iuliandita/zero-day in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
· Hunt novel vulnerabilities via reversing, patch diffs, fuzzing, and PoCs. Triggers: 'zero-day', '0-day', 'vulnerability research', 'CVE variant analysis', 'patch diffing', 'n-day variant', 'fuzz', 'exploit dev'. Not SAST: security-audit. It is listed under Security on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: makes network calls, reads secrets. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
iuliandita (@iuliandita) published this skill. Their other Agent Skills are listed on their SkillMD profile.