Safeguard
Security Guides•

Is this report a vulnerability? A triage guide for maintainers

Not every security report is a real vulnerability. Four buckets and five questions help a volunteer maintainer decide quickly and reply fairly.

Safeguard Security Team
3 min read

Sort each report into one of four buckets: working as intended, a bug, a feature request, or a vulnerability. A vulnerability is something that lets an attacker compromise confidentiality, integrity or availability across a trust boundary. Most reports that arrive labelled "security" are one of the other three.

The four buckets

The OpenSSF maintainer guide uses these categories, and they are practical:

  • Working as intended. The behaviour is documented or is the design. The reporter expected something else.
  • Bug. Wrong behaviour with no attacker gain, such as a crash on bad input that only hurts the person who supplied it.
  • Feature request. A hardening idea or missing control. Valuable, but not a flaw in what you shipped.
  • Vulnerability. Someone can do something they should not be allowed to do.

The guide states plainly that not everything reported as a vulnerability is one. Say that to yourself before you reply.

Five questions that settle most cases

  1. Who is the attacker? Name them. An anonymous remote user is different from someone who already controls the machine.
  2. What boundary do they cross? If the attacker needs access they would already have, there may be no boundary.
  3. What do they gain? Read data, change data, run code, or take the service down.
  4. Does it work against a default setup? A flaw that needs an unusual configuration is still real, but it changes how you describe it.
  5. Can you reproduce it? Ask for a proof of concept if one is missing.

If the answers to the first three are empty, it is probably not a vulnerability. Your README is the right place to write down that boundary, so you can point to it. See what to document in a maintainer boundaries README.

Replying to each outcome

  • Not a vulnerability: Thank them, explain which bucket you chose and why, and offer to move it to the public tracker as a bug or feature request.
  • Unclear: Ask for affected lines, the risk, a proof of concept, and what a fix needs to cover.
  • Cannot reproduce: Try more than once, say what you tried, and close politely.
  • Vulnerability: Move to the private fix process and agree a timeline.

A polite explanation matters. Reporters who feel brushed off post publicly. Reporters who feel heard often come back with a better report.

Severity comes second

Do not argue about the score before you agree it is a vulnerability. Once it is, severity follows from the answers above. Scores are a communication tool for users, and your judgment about your own project should carry weight.

Quick check

What if a reporter insists it is a vulnerability and I disagree?

Explain your reasoning in terms of the attacker and the boundary. If you remain unsure, ask a trusted peer to read the report. Disagreement is fine, silence is not.

Should I move a non-vulnerability report to a public issue?

Offer it to the reporter first. If it is a plain bug or feature request, public is fine once they agree.

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.