Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Authentication is explicitly required per the description and PoC, so PR:L not PR:N; only confidentiality is impacted via member list disclosure.
Primary rating from Vendor (https://github.com/go-gitea/gitea).
CVSS VectorVendor: https://github.com/go-gitea/gitea
Lifecycle Timeline
5DescriptionCVE.org
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":"alice@test.com",...}]
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 }
AnalysisAI
Private organization member enumeration in Gitea allows any authenticated user to retrieve the full member roster - including emails - of a private organization via the /api/v1/orgs/{org}/members endpoint. The root cause is an incomplete fix: PR #38145 added visibility guards to ListPublicMembers and IsPublicMember but omitted the same guard from ListMembers, leaving a single missing HasOrgOrUserVisible check in routers/api/v1/org/member.go. Proof-of-concept code is publicly available in the GitHub Security Advisory; no active exploitation has been confirmed in CISA KEV, and the EPSS score of 0.16% (5th percentile) indicates low probability of widespread automated exploitation.
Technical ContextAI
Gitea is a self-hosted, open-source Git service written in Go (pkg:go/gitea.dev). The affected code path is the ListMembers() handler in routers/api/v1/org/member.go, which services GET /api/v1/orgs/{org}/members. The root cause is CWE-200 (Exposure of Sensitive Information to Unauthorized Actor): the handler processes the request without first calling organization.HasOrgOrUserVisible() to verify that the requesting user has permission to see the organization's full membership. A parallel fix for the public_members endpoints was applied in PR #38145, confirming the intended access-control pattern exists and is functional - it was simply never ported to the ListMembers route. The leaked response body includes member logins and email addresses per the PoC output.
RemediationAI
Upgrade to Gitea v1.27.0 or later, which applies the missing HasOrgOrUserVisible() guard to ListMembers() in routers/api/v1/org/member.go. The patch is confirmed in the GitHub Security Advisory GHSA-prr9-9mp4-5gp2 (https://github.com/go-gitea/gitea/security/advisories/GHSA-prr9-9mp4-5gp2) and the official release blog at https://blog.gitea.com/gitea-1.27.0-is-released/. If an immediate upgrade is not possible, a compensating control is to restrict API access to the /api/v1/orgs/*/members endpoint via a reverse proxy (e.g., block or require additional authentication on that path pattern in nginx/Caddy); note this may break legitimate tooling that calls the members API. Auditing Gitea access logs for unexpected calls to /api/v1/orgs/{org}/members from accounts not belonging to those organizations can help detect exploitation attempts retroactively.
Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi
Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r
Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir
Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea
Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any
Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec
models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to rem
Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica
Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran
An issue was discovered in Gitea through 1.11.5. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita
Missing Authorization in GitHub repository go-gitea/gitea prior to 1.16.4. Rated high severity (CVSS 7.1), this vulnerab
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allVendor StatusVendor
SUSE
| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-58155
GHSA-prr9-9mp4-5gp2