CVE-2026-59766Medium· 4.3▾ SunlitGitea CVE-2026-20800 sibling endpoints not covered: revoked user still reads private repo objects via `/api/v1/user/starred` and private issue titles via `/api/v1/user/times`
▾ Sunlit zone — Low / medium · no exploitation signal
impact 23.7 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
CVE-2026-20800 fixed private-info leakage to revoked users only for the notification endpoint. Two sibling endpoints that return data keyed on the caller's own relationship still do not re-check repo access at output time:
GET /api/v1/user/starred — getStarredRepos() computes a per-repo permission but still lists every
starred repo (no filtering), so the full repo object (full_name, private, clone_url, ssh_url)
of a now-inaccessible private repo is returned.GET /api/v1/user/times — ListMyTrackedTimes() queries by UserID only and LoadAttributes brings
in the issue (title, state), leaking private issue titles after revocation.Using the provided reproduction materials, as a revoked user:
GET /api/v1/repos/admin/starred-test → 404.GET /api/v1/user/starred → leaks admin/starred-test, private:true, clone_url.GET /api/v1/user/times → leaks issue.title = "SECRET: …", state.(Runtime-confirmed on gitea/gitea:1.25.4. Oracle = planted sentinel title; no real secret exfiltrated.)
A former collaborator can enumerate private repos they starred and read private issue titles they logged time on, indefinitely after access revocation. Metadata only (no repo content / comment bodies). Low.
getStarredRepos: drop (or minimally redact) repos where permission.HasAnyUnitAccessOrPublicAccess()
is false for the caller.ListMyTrackedTimes: filter tracked-time entries by current repo access.Reported as part of an incomplete-patch measurement study (responsible disclosure).
code.gitea.io/gitea < 1.27.0Upgrade to a patched release:
code.gitea.io/gitea 1.27.0Connected by shared product, vendor, weakness, or advisory.
CVE-2026-55987High· 8.1Gitea: OAuth2 sign-in reactivates an administrator-deactivated account on auth sources without refresh tokens (incomplete fix of #38009)
CVE-2026-57897Medium· 6.5Gitea: Cross-Repo Information Disclosure via Org-Level Actions Run/Job APIs
CVE-2026-58439High· 8.1Gitea: Branch Protection Bypass via PR Retargeting Preserves Stale `official` Approval Flag
CVE-2026-56443Medium· 4.3Gitea: Token public-only scope bypassed on Limited-visibility owners (Repository + Package categories) — residual after CVE-2026-25714 / PR #37118
CVE-2026-58425Medium· 4.3Gitea: OAuth token introspection returns metadata of tokens issued to other clients (RFC 7662 section 4 violation)
CVE-2026-58444Medium· 4.3Gitea: Personal access token scope enforcement bypass on the repository home page (`GET /{owner}/{repo}`) discloses private repository contents