Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with retained API token
-
ExploitCall GET /api/v1/user/subscriptions or /user/starred
-
ImpactRead leaked metadata of now-inaccessible private repos
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated Gitea user who PREVIOUSLY had legitimate access to a private repository, starred or watched it while access was granted, and subsequently LOST that access (e.g., team permission downgrade or collaborator removal) while retaining a valid account/API token. The specific condition is that the star/watch record persists after access revocation, and the GET /api/v1/user/subscriptions and /user/starred endpoints failed to re-check current access. Limiting factors that reduce real-world risk: the attacker must hold valid credentials (PR:L, not anonymous), must have had prior legitimate access to the target repo, only repository METADATA is exposed (name, description, clone URLs, owner, counters) and not repository contents, and the affected Gitea version must be ≤1.26.4 (fixed in 1.27.0 and 28.0.0). |
| Impact | This is a genuine but low-severity broken-access-control issue (CWE-862, Missing Authorization), and every available signal agrees it is NOT a high-priority threat. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3 MEDIUM) shows the only impact is a limited confidentiality leak (C:L) with no integrity or availability effect, and it requires an authenticated account (PR:L). EPSS reinforces this with a 0.15% exploitation probability (4th percentile), and CISA's SSVC framework rates Exploitation: none, Automatable: no, Technical Impact: partial - all consistent with each other. The vulnerability is not in CISA KEV and no public exploit code was identified; only the vendor's own regression test demonstrates the behavior. There is no conflict among the signals here: network vector plus low privilege is accurate because this is a REST API endpoint callable by any authenticated user holding a retained token. The practical ceiling is low: an attacker only recovers repository METADATA (name, description, clone URLs, owner, counters) for private repos they ONCE legitimately accessed and still star/watch - not file contents, and not arbitrary repositories. Treat this as a routine patch-management item, not an emergency. |
| Exploit ScenarioDerived | A contractor is added to a team with read access to a private repository, stars or watches it, then is removed from the team (or downgraded). Although their access was revoked, their valid API token still returns the repo's name, description, clone URLs, owner, and counters via GET /api/v1/user/subscriptions (and the starred-repos endpoint), leaking metadata about a project they should no longer see. No public exploit code exists; the attack simply requires calling the endpoint with a retained token. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Gitea leaks private repository metadata to users whose access has since been revoked: the GET /api/v1/user/subscriptions and /api/v1/user/starred endpoints returned name, description, clone URLs, owner and counters for every watched or starred private repo without re-checking current permissions, so a user who starred a private repo while authorized and later lost access (for example via a team permission downgrade or collaborator removal) could keep reading that metadata with an otherwise valid account. The flaw is fixed in 1.27.0 and 28.0.0 and was disclosed with 28.2.0; EPSS is only 0.15% (4th percentile), there is no KEV listing and no public exploit code identified at time of analysis, and the CVSS 4.3 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) reflects that an attacker must already be authenticated and must previously have held legitimate access, with only metadata - not repository contents - exposed.
RemediationAI
Upgrade to Gitea 1.27.0 or 28.0.0 (or later, such as the 28.2.0 release that carried the disclosure) per the vendor advisory at https://github.com/go-gitea/gitea/security/advisories/GHSA-96gv-2xc4-4hxj; the code fix is in PRs https://github.com/go-gitea/gitea/pull/38321 and https://github.com/go-gitea/gitea/pull/38390, so a vendor-released patch exists at those tagged versions. If upgrading is not immediately possible, the practical compensating control is to block GET /api/v1/user/subscriptions and GET /api/v1/user/starred for non-administrator accounts at a reverse proxy or ingress - trading away users' ability to list their own subscriptions and starred repos, which may break dashboards or CLI tooling - and to audit and rotate API tokens for any user whose private-repository access was downgraded while a star or watch record remained, since a still-valid token is the prerequisite for exploitation. Deleting stale star/watch records for private repositories (or revoking the affected tokens outright) removes the leaked-metadata path, at the cost of losing those users' saved subscription lists. Because the issue is low severity (CVSS 4.3, EPSS 0.15%, no KEV or public exploit), scheduling the upgrade in the normal patch cycle is reasonable rather than emergency action.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-862 (Missing Authorization) broken-access-control defect in Gitea's API layer, tracked against the broad CPE cpe:2.3:a:gitea:gitea:*:*:*:*:*:*:*:* and confirmed by EUVD as affecting Gitea 0 through 1.26.4. Gitea models a user's interest in a repository as a persisted star or watch record; when a user is removed as a collaborator or downgraded at the team level, that record is not deleted, and the list endpoints historically built their queries around the star/watch flag plus an IncludePrivate toggle rather than around the requesting user's present permissions on each repository. Consequently the API returned private-repo metadata (name, description, clone URLs, owner and counters) to accounts that no longer had access. The upstream fix, visible in PR #38321, threads an Actor *user_model.User value into StarredReposOptions and WatchedReposOptions and, when IncludePrivate is true, ANDs an AccessibleRepositoryCondition(opts.Actor, unit.TypeInvalid) into the generated SQL condition so private repositories are only returned if the actor can still reach them; the routers in routers/api/v1/user/star.go and watch.go now pass Actor: user, and an integration test (TestAPIStarredReposAccessRevoked) verifies that a revoked collaborator's starred private repo disappears while the owner still sees their own repo.
Know when Gitea gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Remote REST API callable by any authenticated user (AV:N/AC:L/PR:L/UI:N); only limited private-repo metadata leaks (C:L), with no integrity or availability impact.
Primary rating from Vendor (Gitea).
CVSS VectorVendor: Gitea
Lifecycle Timeline
2DescriptionCVE.org
GET /api/v1/user/subscriptions returned the metadata of every repository a user was watching without checking that the user still had access to it. A user who watched a private repository while having access, and later lost it, for example through a team permission downgrade, could still read its name, description, clone URLs, owner and counters. The issue was fixed in 1.27.0 and 28.0.0 and disclosed with 28.2.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us
Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any
Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by
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
EUVD-2026-103988
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB