Getting started as a researcher

The practical path from picking a program on Sentinel to a validated, paid report, and what each state in the pipeline means.

Last updated 18 Sep 2026 · 18 days ago

New researchers get stuck in two places: testing an asset nobody asked them to test, and writing a report a triager cannot reproduce.

Pick a program

Start at the program directory. Each listing shows scope size, whether the program pays cash or points only, median time to first response, and median time to bounty. Filter on three things:

  • An asset type you already know. If you have never read Android bytecode, a mobile-only program is a slow way to learn.
  • Response time. A program with a 10 day median first response will feel very different from one at 2 days.
  • Scope breadth. Wide scope means more surface and more duplicates. Narrow scope means fewer collisions and harder bugs.

Read the policy and scope first

Read the full policy before you send a single request. The parts that decide whether your work counts:

  • In-scope assets. Exact hostnames, whether wildcards include third-level domains, mobile bundle IDs, API versions.
  • Out-of-scope assets and excluded findings. Most programs exclude self-XSS, missing headers without a demonstrated attack, and rate limiting on unauthenticated endpoints.
  • Testing rules. Request-rate caps, mandatory test accounts, and the identifying header the program wants on your traffic, usually X-Sentinel-Researcher: <your-handle>.
  • Reward table and severity rules. See severity and rewards for how bands are set.

Sentinel's safe harbor baseline applies to every program, but an individual policy may be stricter. The stricter text wins.

Set up an isolated test account

Register test accounts with a tagged address such as yourhandle+acme@researcher.example. Never test with your personal account, and never with an account that holds real data belonging to someone else.

Create two accounts, A and B, both yours. Access-control bugs are proven by having A reach B's object, and that proof is clean only when you own both sides. Set the identifying header in your proxy so the program can separate your traffic from a real incident.

Recon within scope only

Enumerate subdomains, endpoints, and parameters, then filter the results against the scope list before you probe anything. If an asset is not listed, treat it as out of scope even when it clearly belongs to the same company. Ownership is not permission.

Keep automated scanning slow and confined to in-scope hosts. A scanner that hammers a login endpoint looks exactly like an attack, and it is the fastest way to lose your account.

Reproduce twice before you report

Reproduce the bug a second time in a fresh browser profile or a clean session, from a cold start, with your proxy recording raw requests and responses. Second reproduction catches the three most common false alarms: stale session state, a cached response, and a change you made earlier in the same session.

If the second attempt fails, you do not have a bug yet. You have a lead.

Write the report

Write it while the reproduction is still open in front of you. The full structure and a fill-in template are on report quality. The short version: one-line summary, exact asset, numbered steps, real impact, raw request and response, suggested fix.

After you submit

State Meaning Who acts Typical time
New Received, queued for a human Program triager 1 to 3 business days
Needs info Triager cannot reproduce or needs detail You Reply within 7 days or it auto-closes
Triaged Reproduced and accepted, severity set Program 3 to 7 business days from New
Duplicate Matches an earlier valid report Program At triage
Informative Real observation, no actionable risk Program At triage
N/A Not a vulnerability, or out of scope Program At triage
Rewarded Bounty decided and paid Program Within 14 days of Triaged
Resolved Fix shipped and verified Program, then you Varies, 90 day default
Disclosed Report made public Both parties Per disclosure policy

Reward and fix run in parallel. You are usually paid before the patch ships.

Before you submit: checklist

  • [ ] The asset is explicitly in scope, and the finding type is not on the exclusion list.
  • [ ] Reproduced twice, second time from a clean session.
  • [ ] Only your own test accounts are involved, and no third-party data was touched.
  • [ ] Raw request and response are attached, not just screenshots.
  • [ ] Impact is stated as what an attacker gets, not as a CVSS string.
  • [ ] Any data you retrieved during testing has been deleted, and you say so in the report.