Safeguard
Security Guides•

What should a security bug report include so developers can fix it?

Summary, details, proof of concept and impact: the four parts GitHub's default form asks for, plus steps, environment and expected result for QA reporters.

Safeguard Security Team
4 min read

A good security bug report has four parts: a short summary, the technical details, a minimal proof of concept and the impact. GitHub's default private reporting form asks for exactly those. Add exact steps, the environment and the expected result, and a developer can reproduce and judge it quickly.

Start from a proven form

GitHub's documentation for privately reporting a vulnerability says the form by default asks for a summary, details, a proof of concept and an impact statement, and that you should include enough detail for maintainers to reproduce and assess the issue. Maintainers can customize the form and require other information.

You do not need GitHub to use the structure. Copy it into your own ticket template.

The template

  1. Title. Neutral and specific: "Export endpoint returns another tenant's file when the ID is changed".
  2. Summary. Two sentences on what is wrong.
  3. Affected version, build and environment. Include browser, device or API client where relevant.
  4. Preconditions. Which account, role or setting is required.
  5. Steps to reproduce. Numbered, one action each.
  6. Expected result and actual result.
  7. Proof of concept. The smallest request, input or file that shows the problem.
  8. Impact. What an attacker gains, in plain terms.
  9. Suggested severity, with a reason. Mark it as a suggestion.
  10. Evidence. Logs and screenshots with real data redacted.

What each part is for

PartQuestion it answers
SummaryDo I need to look at this now?
PreconditionsCan I set up the same state?
StepsCan I see it myself?
Proof of conceptIs the trigger exactly this?
ImpactHow urgent is it compared with other work?
EvidenceWhat did you actually observe?

Keep the proof of concept small

A proof of concept should show the flaw, nothing more. A single request with a changed identifier beats a script that dumps a database. Smaller is safer to store, easier to read and quicker to turn into a regression test.

Do not test with real customer accounts. Use two test accounts you control. Do not go further than you need to prove the point, and stop once access to data is demonstrated.

Report severity carefully

State what you saw, then give your suggested rating. Say who the attacker must be and what they need, such as a logged in user, or an unauthenticated visitor. A reporter who writes "critical" with no reasoning forces the developer to start from scratch. A reporter who writes "high, because any authenticated user can read any invoice" gives them a head start.

Send it to the right place

Security reports belong in a private channel, not the public backlog. If the project has private reporting enabled, GitHub says the maintainers are notified when you submit and that you are added as a collaborator and credited user on the proposed advisory. If the repository has not enabled it, follow the project's security policy.

After the fix

Offer to retest. Rerun your steps on the fixed build, confirm the proof of concept no longer works, and try close variations, such as other endpoints with the same pattern. Then add the case to the regression suite.

Try it yourself

Click through it at your own pace, or open it full screen. Watch which facts decide whether a finding is exploitable, and make sure your reports carry the same facts.

Safeguard's free scan gives dependency findings with context on reachability, which saves reporters from filing issues that cannot be triggered.

Quick check

Should a report include an exploit script?

Only the smallest proof of concept needed to show the flaw. Avoid anything that extracts real data or works as a ready made attack tool.

Do I need to calculate a CVSS score?

Not always. A reasoned suggested severity helps, and the security team can calculate the formal score.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.