You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(security): rewrite SECURITY.md with SOC2-ready policy (#762)
* chore(security): rewrite SECURITY.md with SOC2-ready policy
Adds explicit triage/remediation SLA (critical 7d, high 30d,
medium 90d), documents the current scanning toolchain (CodeQL,
Scorecard, Trivy, Dependabot, secret scanning), branch protection
on develop, and quarterly access reviews. Updates the reporting
address from a non-routable security@ alias to anand.ray@rocketride.ai
pending shared-mailbox creation.
Refs #760
* docs(security): reference settings as source of truth (CodeRabbit feedback)
* docs(security): address CodeRabbit feedback (settings as source of truth + SLA wording)
@@ -42,13 +46,25 @@ We take security vulnerabilities seriously. If you discover a security issue, pl
42
46
43
47
## Vulnerability & Alert Triage
44
48
45
-
This project uses GitHub-native scanning on the `develop` branch — CodeQL (Default Setup), Secret Scanning with Push Protection, Scorecard, and Dependabot. CodeQL and Scorecard findings both surface as code scanning alerts in the same GitHub UI and share the dismissal workflow described below. All findings are triaged against the SLAs in [What to Expect](#what-to-expect).
49
+
This project uses GitHub-native scanning on the `develop` branch. CodeQL and Scorecard findings both surface as code scanning alerts in the same GitHub UI and share the dismissal workflow described below. All findings are triaged against the SLAs in [What to Expect](#what-to-expect).
Tool configuration, cadence, and exact workflow names are maintained in `.github/workflows/` and the repository's security settings — refer to those as the source of truth.
46
62
47
63
### Two-Person Control on Alert Dismissals
48
64
49
65
To prevent unilateral dismissal of security findings, this repository operates under GitHub's **Delegated Alert Dismissal**, enabled at the `rocketride-org` organization level:
50
66
51
-
1.**Request** — any maintainer with write access can submit a dismissal request. The request **must** include a documented justification: compensating controls, mitigation rationale, or basis for "won't fix". This justification is recorded as the dismissal comment on the alert.
67
+
1.**Request** — any maintainer with write access can submit a dismissal request. The request **must** include a documented justification: compensating controls, mitigation rationale, or basis for "accepted risk". This justification is recorded as the dismissal comment on the alert.
52
68
2.**Approval** — must be given by a *different* authorized reviewer under GitHub Delegated Alert Dismissal (organization owner, security manager, or explicitly delegated custom role). The requester cannot self-approve.
53
69
3.**Dismissal** — GitHub auto-applies the dismissal once approval lands. The full `request → approval → dismissal` trail is preserved on the alert and serves as the system-of-record for audit.
54
70
@@ -58,12 +74,12 @@ Direct (one-step) dismissal is blocked at the organization level.
58
74
59
75
When closing an alert, choose one of:
60
76
61
-
| Disposition | When to use | Evidence captured |
62
-
| --- | --- | --- |
63
-
|**Fix**| Vulnerability is exploitable in our usage| PR linking the alert (auto-closes on merge) |
64
-
|**Mitigated**| Code path is reachable but compensating controls neutralize the risk | Two-person dismissal with controls listed in comment |
65
-
|**False positive**| Tool flagged a non-issue (e.g., test fixture, intentional pattern) | Two-person dismissal with explanation |
66
-
|**Won't fix**| Risk accepted by ownership | Two-person dismissal with named approverand rationale|
0 commit comments