Skip to content

fix: recalibrate FG-002/FG-003 high band to match real exploitability#23

Merged
north-echo merged 1 commit into
mainfrom
fix/high-band-severity-tuning
Jul 17, 2026
Merged

fix: recalibrate FG-002/FG-003 high band to match real exploitability#23
north-echo merged 1 commit into
mainfrom
fix/high-band-severity-tuning

Conversation

@north-echo

Copy link
Copy Markdown
Owner

Summary

Triaging a mid-tier scan surfaced that the high-severity band was inflated by two low-actionability classes, drowning out the genuinely attacker-controllable findings.

  • FG-002 Script Injectioninputs.* / github.event.inputs.* are populated only by a write-gated manual dispatch or an internal workflow_call; they're never reachable directly from an untrusted trigger. Those drop a tier (high → medium, with a note to verify reusable-workflow callers). Attacker-controllable expressions (pull_request.title, head_commit.message, comment.body, head_ref, …) stay high.
  • FG-003 Tag-Based Pinning — branch pins (@main/@master/@dev) are supply-chain hygiene, not an acute exploit. Capped at medium (down from high) with a "mutable branch ref" note. Version tags stay medium; first-party actions/* stay info.

Measured impact (277-repo mid-tier corpus)

  • High-severity findings: 989 → 171 (−83%)
  • FG-002 highs: 467 → 14 (the 14 survivors are all attacker-controllable expressions; 270 moved to medium)
  • FG-003 highs: 347 → 0
  • The two real pwn-request criticals: unchanged

The high band now means "an untrusted actor can influence this," which is the point.

Testing

  • Positive-control fixtures/tests: pull_request.title injection stays high; third-party @main pin is medium.
  • Full go test ./..., gofmt, vet, and self-scan clean.

🤖 Generated with Claude Code

The high-severity band was inflated by two low-actionability classes,
drowning the genuinely attacker-controllable findings.

- FG-002 Script Injection: `inputs.*` / `github.event.inputs.*` are
  populated only by a write-gated manual dispatch or an internal
  workflow_call — not reachable from an untrusted trigger. Drop those
  a tier (high -> medium). Attacker-controllable expressions
  (pull_request.title, head_commit.message, comment.body, head_ref,
  etc.) stay high.

- FG-003 Tag-Based Pinning: branch pins (@main/@master/@dev) are
  supply-chain hygiene, not an acute exploit. Cap at medium (down from
  high) with a "mutable branch ref" note; version tags stay medium,
  first-party actions/* stay info.

Measured on a 277-repo mid-tier corpus: high-severity findings drop
989 -> 171 (-83%), the two real pwn-request criticals are untouched,
and every surviving FG-002 high is an attacker-controllable expression.

Adds positive-control fixtures/tests: pull_request.title injection
stays high; third-party @main pin is medium.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@north-echo
north-echo merged commit a0ecc5f into main Jul 17, 2026
1 check passed
@north-echo
north-echo deleted the fix/high-band-severity-tuning branch July 17, 2026 02:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant