GitHub Advisoryadvisory · Go

GHSA-prr9-9mp4-5gp2 Gitea: Private org member list leaked via /members API endpoint — incomplete fix for PR #38145

MEDIUM Published 2026-07-21 Modified 2026-07-21 Official page ↗
Aliases
CVE-2026-58427
Ecosystem
Go
Packages
gitea.dev
Severity
Moderate
Weaknesses
CWE-200, CWE-863
Reviewed
2026-07-21

Affected packages

• Go gitea.dev: < 1.27.0 → fixed in 1.27.0

Description

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 }

Related

Alias · CVE (1)

  • CVE-2026-58427 Private org member list leaked via /members API endpoint — incomplete fix for PR #38145 vulnerability

Weakness · CWE (2)

  • CWE-200 Exposure of Sensitive Information to an Unauthorized Actor weakness
  • CWE-863 Incorrect Authorization weakness

References