How to Write a Bug Bounty Report



Bug bounty reports are your ticket to either top ranks on a platform or the lowest level of humiliation. Good bug bounty reports lead to good relationships with the bug bounty team and better payouts eventually. If the vulnerability report indicates the following signs then your report is indeed a good report

  • Faster response time from the security team responding to your request
  • Better reputation and relationships with the security team
  • Higher chances of getting a bigger bounty

  • In this chapter, we will learn about the following topics:
  • Prerequisites of writing a bug bounty report
  • Salient features of a bug bounty report
  • Format of a bug bounty report
  • Writing the title of a report
  • Writing the description of a report
  • Writing the proof of concept of a report
  • Writing the exploitability of a report
  • Writing the impact of a report
  • Writing remediation
  • Responding to the queries of the team


Prerequisites of writing a bug bounty report

Even if you have identified a highly critical vulnerability in the application of a bug bounty program, if the vulnerability report is not clearly written and explained, there are chances

that the vulnerability may be rejected by the program. Before writing a bug bounty report, It is crucial that you identify the nature of the program.


Bug Bounty


Referring to the policy of the program

Reading the scope of the bug bounty is probably the most important thing you should do before even looking at the program's website. It will be really frustrating when you spend a

week looking for vulnerabilities in a bug bounty program only to find out that the domain that you tested is not included in the scope. The conventional scope of a bug bounty program contains the following bits of information:

  • Mission statement
  • Participating services
  • Excluded domains
  • Rewards and qualifications
  • Eligibility for participation
  • Conduct guidelines
  • Non Qualifying vulnerabilities
  • Commitment to researchers


Mission statement

The mission statement of a program is its foreword and explains the reason of the company for starting the bug bounty program. It explains the mission that the company has behind

starting the program and the collective outcome that the program vendors want to achieve out of running this program. 


Participating services

The participating services section in the bug bounty policy of a program includes a detailed list of the included domains that are in the scope of testing. This is a very explicit section

and one of the most important sections in a bug bounty program and should be analysed very carefully. Typically, the domains that are listed in a program are written as testingsite.com and if the subdomains are also included, the details are in *.testingsite.com. The longer the list of subdomains in this section, the more chances there are of finding a vulnerability in the program. Another thing to keep in mind is to keep a close eye on this section as programs frequently update this section of the policy to include new targets and domains. Bug bounty programs are generally first come, first served. If the bug bounty program updates its scope and you are the first one to know about it, it is highly likely that you will find a number of critical vulnerabilities in that domain. However, that being said, it is advised that you test each domain thoroughly with full concentration to look into critical vulnerabilities.

Excluded domains

This section is also important to look at as it contains the details about those domains that it is prohibited to test. Sometimes bug bounty programs deploy their applications on test servers and mention their original websites in the excluded domains section so as to prevent unwanted data traffic and server downtime.

Excluded domains are out of the scope of testing and result in repercussions when tested and reported. It is strongly advised to look for the excluded domains section and review it before testing the applications.

Reward and qualifications

This section outlines the expected rewards with respect to the vulnerabilities in a tabular form. The sections contain the category of the vulnerabilities and the reward for core applications and non-core applications. The payout ranges are listed in this section to give an idea to the researcher of what to expect in regards to which vulnerability.


This is to notify the researchers what to expect from a vulnerability and the vulnerabilities that are rewarded higher than others. Setting this benchmark allows the program owners to justify their rewards after they have resolved a vulnerability and it reduces the chances of debate in the process.


Conduct guidelines

This section gives details about what a researcher should specifically never do when finding vulnerabilities in the program. It is a notification paragraph, stating that while the

disclosure of vulnerabilities is highly appreciated, there are certain things that the researchers should not do, such as:

  • Disclose any vulnerabilities or suspected vulnerabilities discovered to any other person
  • Disclose the contents of any submission to the program
  • Access private information of any person stored on a program's product
  • Access sensitive information
  • Perform actions that may negatively affect the program's users
  • Conduct any kind of physical attack on the organisation's personnel, property, or data centres
  • Socially engineer any employee or contractor
  • Conduct vulnerability testing of participating services using anything other than test accounts
  • Violate any laws or breach any agreements in order to discover vulnerabilities



Non Qualifying vulnerabilities

This section lists all of the vulnerabilities that are explicitly out of scope. It lists the vulnerabilities that have been reported before or are not considered as critical enough to be reported. This is usually a long list of vulnerabilities that include commonly reported issues, such as:

  • Bugs in content/services that are not owned/operated by the program
  • Vulnerabilities affecting users of unsupported browsers
  • Subdomain takeovers for out-of-scope domains
  • Self-XSS or XSS bugs requiring an unlikely amount of user interaction
  • CSRF on forms that are available to anonymous users
  • Clickjacking that is, user interface hijacking on static pages
  • Error messages
  • HTTP 404 codes/pages or other HTTP non-200 code/pages
  • Fingerprinting banner disclosure-public information disclosure
  • Disclosure of known public files or directories
  • Scripting or other automation and brute forcing of intended functionalities
  • Presence of application or web browser "autocomplete" or "save password" functionality
  • Lack of secure and HttpOnly cookie flags
  • HTTPS mixed content
  • Missing HTTP security headers, specifically-Strict-Transport-Security, X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, and Content-Security-Policy




Salient features of a bug bounty report


Every bug bounty report is different in terms of its technical details but every report has some features and aspects that are common and generic, which provide extra insights on the vulnerability that was identified. The following are some pointers that you can take into account while writing bug bounty reports.

  • Clarity
  • Depth
  • Estimation
  • Respect


Format of a bug bounty report


Based on my experience with bug bounties and pen test platforms, I have learned that a well-written report will make a major difference to your success. Over the years, I have

developed a clear understanding of how to report flaws in a program and which flaws to report. This has led me to formulate a format for reporting, but this format is not universal

and it may vary from person to person and case to case. But, it is something that you can adopt for clear reporting.


Writing title of a report

The report title is the first thing that the program owner looks at and notices about your report. The report title should be explicit and to the point. If the report title has emotional

involvement in it, it is often not considered as a positive factor by the program owners. The title is the first impression about your report that the program owners get and it is what

shows the level of maturity of the reporter and their experience. A straightforward title should be the starting point of your report. The following are a few examples of bad report titles:

  • Urgent! SQL injection found

  • Attention! Critical vulnerability

  • Very critical account takeover flaw


The following are some examples of to how you can craft your title better:

  • Union-based SQL injection in developer's portal

  • Hostile subdomain takeover in admin.xyz.com

  • Account takeover using password reset token


Writing the description of a report

The second part of the report is the description. A description must be precise, clear, and to the point. Program owners want to have direct engagement with any text so they do not

have to read much and can pick out the salient points easily. The description should not be something generic; it should be environmental and scenario-specific. This allows report

readers relate to the reports closely rather than thinking of them as generic. Describing a vulnerability is not an easy task for a reporter. However, a method to describe a flaw in a to-the-point and a clear way is to provide links for issues that can help program owners understand, identify, and resolve the issues in a report. The reference links can be taken from technical resources, such as stack overflow, the Open Web Application

Security Project (OWASP), and so on. It is not advised to copy and paste links and descriptions from automated tools and online sites. This gives a very bad impression about the reporter and shows that they did not have time even to write their own general report.



Writing the proof of concept of a report

Without the proof of concept replication steps, there is no way that the team can recreate the scenario that you just created, so it is important that you list down the steps exactly as

you replicated the vulnerability. You should always treat the program owner as a newbie when explaining the proof of concept to them. This way, you can list down all of the steps

in a hierarchical manner. Having simple, easy-to-follow, step-by-step instructions will help those triaging your issue to confirm its validity at the earliest opportunity. For instance, if I

identified an XSS vulnerability, here is what the replication steps would look like:


  1. Go to the following [URL].

  2. Log in using your username and password (you need an account to do this)

  3. On the search box at the top-right, insert the following information:

<script>alert(document.domain);</script>

  1. Click the Lookup button

  2. You'll see a JavaScript popup box showing your domain


Writing exploitability of a report

Writing impact of a report

Writing remediation


Summary

In this chapter, we learned how to write bug bounty reports including the basic outlines of a bug bounty program scope. We found out about the prerequisites of a bug bounty

program and gained an in-depth idea about the scope of a program. We learned what should be included in a bug bounty and what should be the features of the report and its

contents. We learned about what should be the format of the report and what it should contain. There were also notes about to how to write different sections of the report and

how to respond to the teams post-reporting



Post a Comment

Previous Post Next Post
close