Security commentary

Bug Bounties Are Not Dead

A practical intake and validation process for vulnerability reports in an automated reporting era.

Bug Bounties Are Not Dead explanatory diagram
Explanatory diagram · Counterswarm

The scarce resource is validation

A vulnerability report is useful when it identifies a reproducible security failure in a system you operate. Its length, formatting or apparent sophistication does not establish that failure. Automation can help a researcher investigate an issue and can also make weak reports easier to produce. The defensive response should focus on evidence quality and triage capacity rather than trying to infer how the report was written.

A workable programme needs a clear scope, a reliable contact route and a defined process for acknowledgement, investigation and remediation. A bounty is one possible incentive within that process. It does not replace the engineering work needed to decide whether a claim is valid.

Ask for a small, complete evidence package

Request the affected asset, a concise description of the boundary being crossed, the account privileges required and steps that demonstrate the result. Ask the reporter to minimise sensitive data and avoid unnecessary access. A report about another user's records should be reproducible with controlled accounts and synthetic records wherever possible. Keep attachments quarantined; supplied scripts and binaries are untrusted evidence, not instructions that should be executed automatically.

Deduplicate reports using the root cause and affected component, not just a similarity score over prose. Two reports with different endpoints may share one missing permission check. Two similar-looking screenshots may represent distinct issues. Preserve the link between the original report, its evidence and the investigator's conclusion.

Validate within an explicit scope

Before reproducing a report, check that the target is owned or authorised, identify the relevant revision and select the least disruptive test. If the report depends on account roles, use separate test identities and document their permissions. Establish a baseline request that should succeed and a negative request that should fail. Comparing those outcomes makes an authorisation finding easier to assess than inspecting a single response in isolation.

Return distinct verdicts: confirmed, not reproduced under the stated conditions, duplicate, out of scope or awaiting information. A failed reproduction does not always invalidate the report; a configuration difference or missing prerequisite may explain it. State what was tested and what remains unknown.

Close the loop with the researcher and the fix

Give each confirmed issue an owner, a severity rationale and a remediation plan. Link the repair to the original evidence and rerun the narrow test after deployment. Also exercise the legitimate workflow so the fix does not simply disable a necessary feature. Share enough status with the researcher to keep coordination productive, without exposing internal credentials or other customers' data.

Useful programme measures include time to first meaningful response, time to reproducible verdict and time to verified remediation. Report volume alone is a poor success metric. A small queue of well-validated issues can be more valuable than a large pile of unexamined alerts. Human judgement, disciplined evidence and bounded automation can all contribute to that outcome.

Sources and further reading

← All blog