Setup: a public repository setting
- 1
Repository admin
Turns on private vulnerability reporting
PUT /repos/{owner}/{repo}/private-vulnerability-reporting → 204No advisory yet
Private: reporter and maintainers only
- 2
Reporter
Files the report
POST …/security-advisories/reports → 201triagesubmission.accepted: false - 3
Maintainer (optional)
Opens a temporary private fork to build the fix
POST …/security-advisories/{ghsa_id}/forks → 202triagefork ready in up to 5 min - 4
Maintainer
Accepts the report, or closes it as not a security risk
draftorclosed - 5
Maintainer → GitHub as CNA
Requests a CVE ID
POST …/security-advisories/{ghsa_id}/cve → 202draft
Public: everyone, attackers included
- 6
Maintainer
Merges the fix, releases to the registry, publishes the advisory
publishedGHSA in the Advisory Database, CVE public
