Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessNamed as recipient of private-repo transfer
-
DeliveryGranted temporary read collaboration
-
ExploitReject or cancel the transfer
-
ExecutionCollaboration persists unrevoked
-
ImpactClone repo and read code/issues/PRs/wiki
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Operation on resource after expiration or release
|
| Exploitation Conditions | Requires the repository owner to initiate a transfer of a PRIVATE repository to a Gitea user who lacks prior access to it; that named recipient is then granted read collaboration which is NOT revoked when the transfer is rejected or cancelled. Limiting factors that reduce real-world risk: the attacker must be the SPECIFIC user designated as the transfer recipient (not any arbitrary user), must hold a valid authenticated Gitea account, and a transfer must actually have been initiated toward them - it is not attacker-initiated against default configurations. Pre-existing collaborations are unaffected by the fix. Impacts Gitea versions ≤1.27.3. |
| Impact | This is a stale-permission/access-control flaw (CWE-672) in Gitea where a private-repository transfer recipient retains read collaboration after the transfer is rejected or cancelled. The provided CVSS vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3) indicates a network-reachable, low-privilege, no-user-interaction issue with confidentiality-only impact - consistent with the description. Risk signals are uniformly low-to-moderate and non-conflicting: EPSS is 0.27% (17th percentile), there is no CISA KEV listing (not actively exploited), and no public exploit code was identified - only the vendor fix PR. The one caveat is impact scoping: NVD rated confidentiality as Low (C:L), but the description states the recipient retains full read of the repository's code, issues, pull requests and wiki and can clone it, which argues for a High confidentiality impact on the affected repository - see assessed vector. Net assessment: a genuine but narrowly-scoped privacy/access-control bug, not a mass-exploitation priority. It matters most to organizations that routinely transfer private repositories and rely on rejection/cancellation to fully revoke access. No data is missing beyond POC status; absence of KEV and low EPSS together suggest no widespread exploitation. |
| Exploit ScenarioDerived | A repository owner initiates a transfer of a private repo to another Gitea user who previously had no access; that user is auto-granted temporary read collaboration. The recipient (or owner) then rejects or cancels the transfer, but the collaboration is never revoked, so the recipient silently keeps read access and clones the full repository, issues, PRs and wiki without the owner being notified. No public exploit code exists; exploitation requires only being the designated recipient of an attempted transfer (PR:L, AC:L, no user interaction by the victim). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Gitea through 1.27.3 grants the named recipient of a private-repository transfer temporary read collaborator access so they can review the repository, but rejecting or cancelling that transfer never revokes the collaboration, leaving the recipient with persistent read access to the private repository's code, issues, pull requests and wiki, including the ability to clone it, without any notification to the repository owner. Exploitation requires the repository owner to initiate a transfer of a private repository to a specific authenticated Gitea user who lacks prior access, and the affected party is that designated recipient rather than an arbitrary user; it is not attacker-initiated against default configurations. Severity is moderate (assessed CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N; published base score 4.3) with no public exploit identified at time of analysis and a low EPSS of 0.27% (17th percentile). Vendor-released patch: Gitea 28.0.0.
RemediationAI
Upgrade to Gitea 28.0.0, which is the vendor-released patch version referenced by the project release announcement (https://blog.gitea.com/release-of-28.0.0/) and release tag (https://github.com/go-gitea/gitea/releases/tag/v28.0.0), with the underlying fix in PR https://github.com/go-gitea/gitea/pull/39042 and advisory GHSA-xfqq-h54g-92f8; upgrading also applies migration 351, which backfills the RecipientAccessGranted flag as false, so any stale collaboration that already exists must still be removed manually. Because the vulnerable behaviour grants access silently and the repository owner is not notified, operators who cannot upgrade immediately should audit private repositories for collaborations that correspond to rejected or cancelled transfers: enumerate the collaborators of each private repository, compare them against the RepoTransfer history, and revoke read access for any user whose only claim to access came from an unaccepted transfer - for example by removing the user from the repository's collaborator list in the web UI or via the API. As a compensating measure, restrict who can be named as a transfer recipient and require owner review of the collaborator list after every cancelled transfer; the trade-off is operational overhead and the risk of also stripping legitimate pre-existing collaborations if the audit is imprecise, since the upstream fix deliberately preserves collaborations that existed before the transfer. Note that retained access includes the full private repository contents, issues, pull requests and wiki, so any affected recipient should be treated as having had the ability to clone the repository, and operators should rotate any secrets, tokens or deploy keys that were stored in the repository and consider the code exposed to that named account. No public exploit code has been identified, so prioritisation can follow normal patch cadence for private-repository deployments rather than emergency response, but the fix should not be deferred indefinitely given the silent, persistent nature of the exposure.
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
The flaw is a stale-permission/access-control defect classified as CWE-672 (Operation on a Resource after Expiration or Release): an authorization record created for a temporary purpose outlives the lifecycle event that should have invalidated it. In Gitea's transfer workflow, when a private repository is transferred to a user who does not already have access, the application inserts a read-level collaboration (perm.AccessModeRead) for the recipient so they can inspect the repository before accepting. Rejection or cancellation of the pending transfer removed the RepoTransfer record but not the corresponding row in the collaboration table, so the recipient continued to receive read-level effective permissions through Gitea's access model. The upstream fix, delivered via GitHub PR 39042 and shipped in v28.0.0, introduces a RecipientAccessGranted boolean on the RepoTransfer model, persisted through a new xorm model migration (migration 351, AddRecipientAccessGrantedToRepoTransfer) that adds a NOT NULL DEFAULT false column. CreatePendingRepositoryTransfer now records whether access was granted, allowing transfer rejection/cancellation to delete only the transfer-granted collaboration while preserving collaborations that predate the transfer. The patch also refactors DeleteCollaboration into a shared deleteCollaboration helper with a deleteCollaborationByMode variant, changes access checking from HasAnyUnitAccess to GetIndividualUserRepoPermission with HasAnyUnitAccessOrPublicAccess, and stops DeleteCollaboration from forcibly un-watching a repository when the user still retains public read access - a behavioural refinement that prevents the revocation logic itself from over-reaching.
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 authenticated recipient (PR:L, AV:N) gains full read of one private repo (C:H), with no integrity or availability impact; exploitation depends on a transfer being initiated to the attacker.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
2DescriptionCVE.org
When a private repository is transferred to a user who lacks access, Gitea grants that recipient temporary read access as a collaborator so they can review the repository. Rejecting or cancelling the transfer did not revoke this collaboration, so the named recipient kept persistent read access to the private repository, including its code, issues, pull requests and wiki, and could clone it. The repository owner was not notified. Transfer-granted access is now removed while collaborations that existed before the transfer are preserved.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
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
An issue was discovered in Gitea through 1.11.5. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita
EUVD-2026-93925
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB