You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@magpie.apache.org by po...@apache.org on 2026/07/08 16:25:12 UTC
(magpie) 01/01: feat(security-issue-sync): actionable admin hand-off relay for GHSA changes
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch ghsa-admin-handoff-relay
in repository https://gitbox.apache.org/repos/asf/magpie.git
commit fda583da65b63edfe008289dca0cc28abfe784bc
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Wed Jul 8 18:23:54 2026 +0200
feat(security-issue-sync): actionable admin hand-off relay for GHSA changes
github-advisory.md's Step 4 items 2 (state/publish/close) and 3 (collaborator
management) are admin/security-manager operations the collaborator tier cannot
perform; previously they were only 'surfaced' as a passive recap line. Add a
concrete 'Admin hand-off relay' section: draft an email (never auto-sent) to the
org's advisory-admin security team (security@apache.org for ASF), CC the project
security list, naming what the sync already did, the admin-only change needed and
why the collaborator tier can't, and the ask. Point Step 4 items 2 and 3 at it.
Proven as a local override in an adopter repo; upstreaming per the override flow.
---
skills/security-issue-sync/github-advisory.md | 70 +++++++++++++++++++++++----
1 file changed, 61 insertions(+), 9 deletions(-)
diff --git a/skills/security-issue-sync/github-advisory.md b/skills/security-issue-sync/github-advisory.md
index 339d2350..8c0239d5 100644
--- a/skills/security-issue-sync/github-advisory.md
+++ b/skills/security-issue-sync/github-advisory.md
@@ -97,15 +97,67 @@ Each is a separate confirmable proposal item (SKILL Golden rule 1).
advisory. **Never** copy an advisory-supplied CVSS back into the
tracker's severity field (the project's severity rule governs the
tracker; the advisory mirrors *it*).
-2. **Mirror state (publish) — admin tier, HAND OFF.** Do not PATCH
- `state` at the collaborator tier. Surface it as a hand-off to a repo
- admin / the hosting security team, and note that many foundation
- advisories stay `triage` by design (the CVE ships through the
- foundation's own CVE tool, not GitHub's advisory flow), so publishing
- is often not even desirable.
-3. **Provide collaborator access — admin tier, HAND OFF.** Surface the
- missing-roster access drift as a hand-off to an admin; the sync cannot
- add collaborators at the collaborator tier.
+2. **Mirror state (publish / close) — admin tier, HAND OFF.** Do not PATCH
+ `state` at the collaborator tier. Route it through the
+ [Admin hand-off relay](#admin-hand-off--relay-the-needed-change-to-the-advisory-admin-team)
+ below, and note that many foundation advisories stay `triage` by design
+ (the CVE ships through the foundation's own CVE tool, not GitHub's
+ advisory flow), so publishing is often not even desirable.
+3. **Provide collaborator access — admin tier, HAND OFF.** The sync cannot
+ add collaborators at the collaborator tier; route the missing-roster
+ access drift through the
+ [Admin hand-off relay](#admin-hand-off--relay-the-needed-change-to-the-advisory-admin-team).
+
+---
+
+## Admin hand-off — relay the needed change to the advisory-admin team
+
+Step 4 items 2 (state / publish / close) and 3 (collaborator management) are
+**admin / security-manager** operations the collaborator tier cannot perform.
+Do **not** leave them as a passive recap line, and do **not** post a
+`<tracker>` comment @-mentioning project members — the project's own
+security-team members typically do **not** hold GitHub advisory admin rights
+either, so mentioning them leaves the action on nobody's desk. Instead,
+**relay the needed change to the team that administers GitHub Private
+Vulnerability Reporting for the hosting org** — for ASF projects, the
+foundation security team, via the [`tools/gmail/asf-relay.md`](../../tools/gmail/asf-relay.md)
+path.
+
+### Delivery — an email relay (draft, never auto-sent)
+
+Create a **draft** email to the org's advisory-admin security team
+(`<security-team-list>`; for ASF, `security@apache.org`) with
+`oauth-draft-create` — never send directly (SKILL Golden rule 1; and the
+Gmail MCP mangles the `security/advisories/GHSA-…` URLs into redirects, so
+use oauth-draft). **Always CC the project `<security-list>`** so the
+project security team stays looped in on what was requested. Reply on the
+originating `<security-list>` thread when the report was relayed there
+(`--thread-id <id>`); otherwise it is a **new** message (omit `--thread-id`)
+with a self-describing subject. Do **not** post a `<tracker>` comment as the
+hand-off; the tracker gets at most a one-line rollup note recording that the
+relay draft was prepared.
+
+### What the relay says (three parts, terse)
+
+1. **What the sync already did** — the collaborator-tier field edits applied
+ (e.g. *"linked `cve_id=<CVE>` onto GHSA-…; recorded @… as a co-finder"*),
+ each advisory as a clickable `…/security/advisories/GHSA-…` URL.
+2. **The admin-only change + why the sync can't** — the exact action
+ (*"close GHSA-… as a duplicate of GHSA-…"*, *"publish GHSA-…"*, *"add @…
+ to collaborating_users"*) and that the operator holds only advisory-
+ **collaborator** rights (state / collaborator PATCHes return `403`).
+3. **The ask** — one line asking the advisory admins to perform it.
+
+### Guardrails
+
+- **Propose-then-confirm** the draft (recipient, CC, subject, body); the
+ operator reviews the Gmail draft and sends it.
+- **Idempotent** — record a prepared hand-off with a `<tracker>` rollup
+ marker (`<!-- <marker-prefix>: ghsa-admin-handoff v1 -->`) naming the GHSA
+ id + requested action; do not re-draft the same pending action.
+- **Collaborator-doable ≠ hand-off** — field writes the operator CAN do
+ (`cve_id`, `credits`, `severity`, `cwe_ids`, `vulnerabilities`) are just
+ applied; the relay fires **only** for the admin-only cases above.
---