Gitea: Private org member list leaked via /members API endpoint — incomplete fix for PR #38145 in gitea.dev
Gitea: Private org member list leaked via /members API endpoint — incomplete fix for PR #38145 in gitea.dev
02 / AFFECTED SOFTWARE
Affected packages
38 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
Private org member list leaked via /members API endpoint — incomplete fix for PR #38145
## Summary PR #38145 fixed ListPublicMembers and IsPublicMember but missed ListMembers. Any authenticated user can enumerate ALL members (not just public ones) of a private organization. ## Affected Versions <= v1.26.4 (latest) and main branch ## Root Cause routers/api/v1/org/member.go — ListMembers(): // Missing check: if !organization.HasOrgOrUserVisible(ctx, ctx.Org.Organization.AsUser(), ctx.Doer) { ctx.APIErrorNotFound() return } ## Proof of Concept # Setup: privateorg (private), alice = member, bob = outsider # Bob lists ALL members of private org curl -s "http://gitea/api/v1/orgs/privateorg/members" \ -H "Authorization: token BOB_TOKEN" # Result: HTTP 200 [{"login":"alice","email":"[email protected]",...}] # Expected: HTTP 404 ## Note This is an incomplete fix variant of PR #38145. That PR fixed public_members endpoints only. ListMembers (/orgs/{org}/members) remains unpatched. ## Fix Add to ListMembers(): if !organization.HasOrgOrUserVisible(ctx, ctx.Org.Organization.AsUser(), ctx.Doer) { ctx.APIErrorNotFound() return }
Gitea: Private org member list leaked via /members API endpoint — incomplete fix for PR #38145 in gitea.dev
05 / REFERENCES
Further evidence
- https://blog.gitea.com/gitea-1.27.0-is-released/
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58427.json
- https://github.com/go-gitea/gitea/releases/tag/v1.27.0
- https://github.com/go-gitea/gitea/security/advisories/GHSA-prr9-9mp4-5gp2
- https://nvd.nist.gov/vuln/detail/CVE-2026-58427
- https://github.com/go-gitea/gitea