Graphql: Sorting the reports by jira_status field resulted to different value

Disclosed: 2020-08-27 08:27:50 By 0619 To security
Low
Vulnerability Details
**Summary:** Sorting the reports by jira_status yield to different result depicting the team is using jira even the user has no access. **Description:** A user with no access to jira information of any reports can somehow access the jira field using order_by through `jira_status` Using the 2 graphql below we can see the discrepancies of `total_count` for the test teams i will mention: __Test Teams:__ 1. █████████ order_by:field:`id` = `total_count: 10` order_by field:`jira_status`= `total_count :11` 2. ██████████ : order_by:field:`id` = `total_count: 458` order_by field:`jira_status`= `total_count :466` 3. ████ order_by:field:`id` = `total_count: 299` order_by field:`jira_status`= `total_count :309` 4. ███ order_by:field:`id` = `total_count: 109` order_by field:`jira_status`= `total_count :110` Graphql Query using field `id` in`order_by` as criteria it will yield same result except for the field of `jira_status` ``` { reports(where: {team: {handle: {_eq: "██████"}}}, order_by: {direction: ASC, field: id}) { total_count nodes { substate jira_escalation_state jira_escalation_last_state_change_at created_at disclosed_at extracted_report_data { hosts } title url team { handle } reporter { username } } } } ``` Please change the field in `sort_by` to` jira_status` to display different result. Below is part of the response using jira_status as the field, please notice that `jira_escalation_state`and `jira_escalation_last_state_change_at` has null values meaning a ==public user don;t have access to this information.== { "data": { "reports": { =="total_count": 11, == "nodes": [ { "substate": "resolved", "jira_escalation_state": null, "jira_escalation_last_state_change_at": null, "created_at": "2019-09-18T11:57:36.488Z", "disclosed_at": "2020-04-21T02:53:04.699Z", "extracted_report_data": null, "title": "███", "url": "███", "team": { "handle": "████████" }, "reporter": { "username": "█████" } }, Additional information: I dig more on the discrepancies and checked the returned reports 1 by 1 to and compare result, in Team ███████, the report ███████ appeared twice because of the sort_by jira_status. Thank you. Ariel ## Impact Due to improper access control in the `sort_by` of `jira_status` field any user can give an idea which report are using jira even if the user has no access jira information.
Actions
View on HackerOne
Report Stats
  • Report ID: 955286
  • State: Closed
  • Substate: resolved
  • Upvotes: 18
Share this report