🛡️ CVE-2026-59766 — gitea.dev

⚪ Unknown ✅ No Known Exploit CWE-863 OSV
N/A
CVSS Score
0 Low4 Medium7 High9 Critical10

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/starredgetStarredRepos() 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/timesListMyTrackedTimes() queries by UserID only and LoadAttributes brings

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-test404.

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

github.com (Web)
github.com (Package)
github.com (Web)

Details

Severity Unknown
CVSS Score N/A
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
CWE CWE-863
Public Exploit ✅ No
Source OSV
Published 2026-07-21
Updated 2026-08-12
Modified 2026-07-27
Fix URL N/A

Affected Packages

Software From version Fixed in
code.gitea.io/gitea
gitea.dev

Similar Threats

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.