report-preflight · git:20260504.2a64374 · 2026-05-04 · sha256 7e72b1820382dfae
report-preflight git:20260504.2a64374A
Immutable. This exact content is served forever at /api/v1/blob/7e72b1820382dfae.
--- name: report-preflight description: Pre-submission eligibility check for bug bounty findings. Catches ineligible patterns, AI/scanner false positives, and generates impact justification for borderline lows. Use before writing a report or when assessing whether a finding is worth reporting. --- # Report Preflight Pre-submission eligibility gate. Run BEFORE committing to a report. ## Usage ``` /report-preflight <target> <finding-type> <severity> <one-line description> ``` Or invoke with no args during active testing to check the current lead. ## Process ### Step 1: Map finding against three tiers **HARD INELIGIBLE** — Platform core ineligible (see Tier 1). Do not report regardless of program. **SOFT INELIGIBLE** — Common AI/scanner over-inflation (see Tier 2). Reportable ONLY with demonstrated impact beyond the pattern itself. **PROGRAM-SPECIFIC** — Check target program policy for per-program exclusions. Do not conflate with universal ineligibility. ### Step 2: Check against lists #### Tier 1: Core Ineligible Findings Universally ineligible across major bug bounty platforms. **Do not report.** Source: [HackerOne Core Ineligible Findings](https://docs.hackerone.com/en/articles/8494488-core-ineligible-findings). Other platforms (Bugcrowd, YesWeHack, Intigriti) maintain similar lists — check the specific platform's policy. **Theoretical / unlikely user interaction:** - Vulns only affecting unsupported/EOL browsers or OS - Broken link hijacking - Tabnabbing - Content spoofing / text injection (no security impact) - Self-exploitation (self-XSS, self-DoS) unless cross-account - Attacks requiring physical device access (unless in scope) **Theoretical / no real-world impact:** - Clickjacking on pages without sensitive actions - CSRF on non-sensitive forms (logout, language change, etc.) - Permissive CORS without demonstrated exploitation - Software version disclosure / banner identification / descriptive error messages or headers - CSV injection - Open redirects without additional security impact (no OAuth chain, no token theft) **Missing hardening / best practices (not bugs):** - SSL/TLS configuration opinions - Lack of SSL pinning - Missing jailbreak detection in mobile apps - Cookie flags (missing HttpOnly/Secure) without demonstrated exploitation - CSP configuration opinions - Email security features (SPF/DKIM/DMARC) - Most rate limiting issues **Hazardous testing (never attempt):** - DoS/DDoS / availability attacks - Social engineering / phishing - Notification/form spamming - Attacks on physical facilities #### Tier 2: Common AI/Scanner Over-Inflated Patterns NOT vulnerabilities without specific proof of impact. **Reportable only with demonstrated exploitation.** | Pattern | Not a bug because | IS a bug when | |---------|-------------------|---------------| | Source map exposure | Dev tooling artifact | Contains hardcoded secrets, API keys, or PII | | `REACT_APP_*` env vars in webpack | Client-side config by design | Contains actual secrets (write-access API keys, not public client IDs) | | Services returning 401/403 | Auth working correctly | Bypass found, or response body leaks data despite status code | | CORS misconfiguration | Informational without exploit | Demonstrates credential theft or data exfil cross-origin | | Staging/dev endpoint exposure | May be intentional | Contains real user PII, valid creds, or unauth admin access | | Blind SSRF (boolean oracle only) | No demonstrated data access | Demonstrates port scanning, internal service interaction, or metadata access | | Username/email enumeration | Low impact, often by design | Enables account takeover chain or violates privacy regulations | | Rotated/expired credentials in JS | No longer valid | Still valid and grant access | | Public OpenAPI/Swagger schemas | Documentation, not a vuln | Contains validated API keys or reveals exploitable unauth endpoints | | Exposed admin panels | Access != vulnerability | Unauth access to sensitive data or actions | | GraphQL introspection enabled | Often intentional | Reveals hidden mutations with unauth access | | Verbose stack traces | Informational | Leaks secrets, internal IPs, or exploitable version info | | Public .git directory | Depends on contents | Contains secrets, credentials, or sensitive source | | "Dummy" data on staging | Test data, not real | Contains real PII or valid production credentials | | Open redirect | Informational alone | Chains with OAuth token theft, session fixation, or phishing | | Missing rate limiting | Best practice | Enables brute force with demonstrated account compromise | | Subdomain takeover candidate | Often false positive | Verified against can-i-take-over-xyz and actually claimable | #### Tier 3: Program-Specific Exclusions Check the target's program policy for: - Explicit out-of-scope vulnerability types - Severity minimums (some programs only reward High/Critical) - Specific endpoint or domain exclusions - Testing restrictions ### Step 3: Render verdict **ELIGIBLE** — No ineligible pattern matched. Proceed to report. **NEEDS_JUSTIFICATION** — Matches soft-ineligible but has demonstrated impact. Generate the justification block (Step 4). **INELIGIBLE** — Matches hard-ineligible or lacks demonstrated impact. Do not report. Log as a gadget or lead if useful as a chain component. ### Step 4: Generate justification block for NEEDS_JUSTIFICATION For borderline findings (especially lows matching common ineligible patterns), include in the report: > **Note for program review:** This finding surfaces a pattern commonly associated with [ineligible category]. However, the demonstrated impact differs materially: [concrete evidence with specifics]. Full reproduction steps and network evidence are provided below for independent verification. We acknowledge this is a nuanced scenario and present it based on the demonstrated impact rather than the pattern classification alone. Adapt to the specific finding. No filler, no inflation — if the impact is genuinely low, say so honestly. The goal is to prevent instant triage-as-informational by surfacing evidence that distinguishes this case from the generic pattern. ### Step 5: Confidence check After classification, use `assess-confidence` to evaluate the finding with the evidence gathered, exploitation demonstrated, and verdict from this preflight. If confidence is low, reconsider reporting. Document override reasoning if proceeding anyway. ## Skill Pipeline ``` vuln-critic (evidence quality) → report-preflight (eligibility) → exploit-verifier (confirmation) → report-writer (deliverable) ```