ATALAIA
  1. Home
  2. Resources
  3. Blog
  4. Are you ready for a bug bounty?
Testing · Checklist

Are you ready for a bug bounty?

A checklist to run in one meeting before you invite outside researchers: disclosure basics, scope, triage SLAs, reward structure and the loop that turns reports into fixes.

4 min readAtalaia team

Bug bountyVDPsecurity.txtTriage

A bug bounty is a promise to strangers: send us what you find, and we will respond quickly, fairly and in good faith. Launching one before you can keep that promise tends to produce a flood of reports, an overwhelmed inbox and annoyed researchers.

The checklist below is meant to be run in a single meeting with engineering, security and whoever owns your public website. If you cannot tick most of it, start with a disclosure policy and come back in a quarter.

Step zero: a VDP and security.txt

A vulnerability disclosure policy (VDP) is the free, always-on version of a bounty. It tells people how to report, what you consider in bounds, and that you will not take legal action against good-faith research. Publish it before any reward scheme.

Then publish a security.txt file, as described in RFC 9116, so researchers and tools can find the right contact.

# https://example.com/.well-known/security.txt
Contact: mailto:security@example.com
Expires: 2027-06-30T23:59:59Z
Policy: https://example.com/security/disclosure
Acknowledgments: https://example.com/security/thanks
Preferred-Languages: en, pt
Canonical: https://example.com/.well-known/security.txt

Check that the mailbox is monitored, that the Expires date is in the future and that someone owns renewing it.

Readiness checklist

#QuestionReady when
1Do you have a public VDP?Published, linked from security.txt, with a safe-harbour statement
2Have you tested the in-scope assets yourselves?A recent pentest or internal review has been run and its findings fixed
3Is there an asset inventory?You can list every domain, app and API you would put in scope, with an owner
4Who triages?Named people with time set aside, plus cover for holidays
5Who fixes?Each in-scope asset maps to a team that has agreed to fix SLAs
6Can you reproduce safely?A staging environment or test accounts that researchers and triagers can use
7Is legal on board?The safe-harbour wording and payment terms have been reviewed
8Can you pay?A budget owner and a payment route exist, even for a private program

Scope a stranger can apply

Good scope reads like a contract, not a wish. Write it so that a researcher who has never spoken to you can decide whether a finding counts.

  • In scope: exact hostnames, app identifiers and API base paths, with the environment named.
  • Out of scope: third-party services you do not control, marketing sites, and anything shared with other tenants.
  • Excluded classes: issues you have decided not to reward, such as missing headers without impact, self-XSS or rate limiting on non-sensitive endpoints.
  • Rules of engagement: no denial of service, no social engineering of staff, no accessing other users' data beyond what proves the issue, use the test accounts provided.

Start with a private program on a narrow scope. Widen it once triage is calm.

Triage SLAs and rewards

Publish response targets you can meet on your worst week, not your best. A typical structure has four clocks:

  1. First responseThe researcher hears from a person that the report has been received and is being looked at.
  2. Triage decisionValid, duplicate, out of scope or needs more information, with a severity attached.
  3. Reward decisionThe reward band is confirmed once severity is agreed.
  4. Fix and disclosureThe issue is fixed, verified and, where agreed, disclosed.

Set rewards as a table of bands by severity and asset tier, then fill in amounts from your own budget. The structure matters more than the numbers.

SeverityTier 1 assets (core product, auth, payments)Tier 2 assets (supporting apps and APIs)
CriticalBand ABand B
HighBand BBand C
MediumBand CBand D
LowBand DThanks and acknowledgement

Write down how you score severity, for example with CVSS plus a note on business impact, so two triagers reach the same answer.

Close the fix loop

A bounty that only produces payouts is a cost. One that feeds the line is an investment. For every valid report:

  • Open a ticket in the owning team's backlog with the SLA attached, not in a security-only tracker.
  • Verify the fix against the original proof of concept, and ask the researcher to retest where appropriate.
  • Add a regression test, a Semgrep rule or a scanner check so the same class cannot quietly return.
  • Ask once a quarter which stations on the line should have caught the class earlier, and fix the station.

Check yours this week

  • Fetch /.well-known/security.txt on your main domain. If it is missing or expired, that is your first task.
  • Run the eight-row table above with the right people in the room and mark each row yes, no or partly.
  • If there are more than two noes, publish a VDP, schedule a pentest and revisit the bounty next quarter.

Where this sits on the line

Talk it through

A 30-minute call. No slides, no price list, and a next step either way.