Iterations from unauthorized descendant groups can be disclosed via include_descendants.
HackerOne report #3484568 by go7f0 on 2026-01-02, imported by @fvpotvin:
Report | Attachments | How To Reproduce
HackerOne Analyst Summary
Summary
An access control issue exists in GitLab's iterations API endpoint that allows unauthorized disclosure of iteration data from private descendant groups. The vulnerability occurs when the include_descendants parameter is used in the /api/v4/groups/<parent_group_id>/iterations endpoint, which bypasses proper authorization checks for private child groups. When a parent group is configured as public but contains private child groups, authenticated users can retrieve iteration information from those private descendant groups despite lacking direct access permissions.
Steps to Reproduce
- Create a parent group that is configured as public visibility
- Within the parent group, create a child group with private visibility settings
- Navigate to the private child group and access Plan → Iterations to create a new iteration cadence
- Within the newly created cadence, add a new iteration
- Make an API request to the parent group's iterations endpoint with the include_descendants parameter:
GET /api/v4/groups/<parent_group>/iterations?include_ancestors=false&include_descendants=true
Impact
The vulnerability enables unauthorized access to iteration planning data from private descendant groups, potentially exposing project management information. This includes access to iteration titles, descriptions, and scheduling information.
Original Report
Summary
include_descendants allows users to retrieve iterations belonging to descendant groups they should not be able to access.
Steps to reproduce
Construction environment: parent_group is public, child_group is private.
Create new cadences in private-group Plan -> Iterations.
The
Enable automatic schedulingoption here can be checked or unchecked; for ease of distinction, it is left unchecked.
Add iteration in the newly created Cadence.
Enter sensitive content in the Title and Description fields.
At this point, since private-group is private, other regular accounts will receive a 404 error when attempting to access it.
However, since the parent group is public, the content of the iterations in the private group can be obtained through /api/v4/groups/<parent_group_id>/iterations?include_ancestors=false&include_descendants=false.
Impact
This enables unauthorized access to iteration data from descendant groups, potentially exposing private planning information across group boundaries.
Attachments
Warning: Attachments received through HackerOne, please exercise caution!
How To Reproduce
Please add reproducibility information to this section:










