🛡️ CVE-2026-59766 — gitea.dev
Description
Gitea 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
Summary
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 byUserIDonly andLoadAttributesbrings
in the issue (title, state), leaking private issue titles after revocation.
Steps to reproduce
Using the provided reproduction materials, as a revoked user:
1. Control: GET /api/v1/repos/admin/starred-test → 404.
2. GET /api/v1/user/starred → leaks admin/starred-test, private:true, clone_url.
3. 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.)
Impact
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.
Suggested remediation
1. getStarredRepos: drop (or minimally redact) repos where permission.HasAnyUnitAccessOrPublicAccess()
is false for the caller.
2. ListMyTrackedTimes: filter tracked-time entries by current repo access.
3. Optionally clear a user's stars / time entries for a private repo on revocation.
Credit
Reported as part of an incomplete-patch measurement study (responsible disclosure).
How this vulnerability can be exploited
This issue can be reached over the network, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality low, integrity none, availability none.
Weakness class
CVE-2026-59766 is classified as CWE-863: Incorrect Authorization. An authorisation check runs but reaches the wrong conclusion, permitting actions it should refuse.
Affected software
CVE-2026-59766 is recorded against 2 packages.
- code.gitea.io/gitea
- gitea.dev
Timeline and source
Published on 21 July 2026 and last revised on 27 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.
References
Details
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| code.gitea.io/gitea | — | — |
| gitea.dev | — | — |
References
Similar Threats
- High CVE-2021-3382
- High CVE-2020-14144
- Medium CVE-2022-38183
- Medium CVE-2022-1928
- Unknown CVE-2019-1010261
More CVE 2026 advisories
Browse all of CVE 2026 in the advisory index.
Free Vulnerability Check
Is your site affected by CVE-2026-59766?
BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against CVE-2026-59766 and other known CVE records.
Scan My Site Free →No credit card required · Results in minutes
ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.