Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as user with repo-creation rights
-
ExploitCreate empty repository via git push
-
ExecutionSupply repo.private=false push option
-
ImpactPost-receive hook publishes repo against FORCE_PRIVATE policy
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
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 | Requires the non-default setting |
| Impact | This is a genuine but modest-priority issue, not a high-urgency flaw. The CVSS 3.1 base score is 5.4 (Medium) with vector AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N, meaning network-reachable over git push, low complexity, but requiring an authenticated user who already holds repository-creation rights (PR:L). CWE-863 (improper authorization) accurately describes the defect: an instance-wide confidentiality policy (FORCE_PRIVATE) is bypassed. No EPSS score, KEV listing, SSVC decision, or POC was provided in the input - exploitation-probability and automation signals are therefore absent, not low; treat the real-world exploitation likelihood as undetermined rather than confirmed-low. The single most important mitigating signal is in the description itself: 'The default configuration is not affected.' Exploitation requires the non-default |
| Exploit ScenarioDerived | On a Gitea instance hardened with |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Gitea instances configured with the non-default setting [repository] FORCE_PRIVATE = true can be made to host public repositories in violation of that instance-wide policy: an authenticated user with repository-creation rights who creates a repository via git push can supply the repo.private=false push option and have it honored on the freshly created empty repository. Only versions 1.27.0 through 28.0.0 are affected, the default configuration is explicitly not exposed, and the exposure is limited to a confidentiality/integrity policy bypass (CVSS 5.4, PR:L) rather than code execution or data theft. No public exploit code has been identified at time of analysis, and there is no CISA KEV listing; the issue is a genuine but modest-priority authorization-logic defect that matters most to operators who deliberately enforce repository privacy by policy.
RemediationAI
Upgrade to Gitea v28.1.0, which contains the vendor-released patch for this issue (release notes: https://blog.gitea.com/release-of-28.1.0/, release artifact: https://github.com/go-gitea/gitea/releases/tag/v28.1.0, advisory: https://github.com/go-gitea/gitea/security/advisories/GHSA-fx95-gwfc-grgc); the underlying code change is in PR https://github.com/go-gitea/gitea/pull/39501 with a follow-up in https://github.com/go-gitea/gitea/pull/39507. If upgrading immediately is not possible, the most targeted compensating control is to restrict repository-creation permission to a small, trusted user group, since the flaw is only reachable by an authenticated user who can create a repository, and to audit existing public repositories for ones that should be private under FORCE_PRIVATE (checking creation events and whether the repository was born from a git push) so any policy violations can be flipped back; the trade-off is added administrative overhead and reduced self-service for developers. Disabling [repository] FORCE_PRIVATE is not a real mitigation because it removes the very policy being bypassed, and blocking git pushes is disproportionate since it would break normal development workflows; note also that the vulnerable path only fires for repositories created by the push itself, so pre-existing repositories do not need remediation beyond normal review.
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 defect is a CWE-863 (Incorrect Authorization) flaw in Gitea's post-receive hook path, specifically routers/private/hook_post_receive.go and its hookPostReceiveUpdateRepoByOptions helper. Gitea supports per-push options, including repo.private, that a pushing client can send to influence repository attributes after a successful push. When a push creates a brand-new, empty repository, the hook evaluated isPrivate.Has() && repo.IsPrivate != isPrivate.Value() and then applied the requested value - including false - without consulting the instance-level [repository] FORCE_PRIVATE policy or the actor's administrative status. Because FORCE_PRIVATE is enforced at repository-creation time but not re-validated in the post-receive option handler, the push option effectively overrode the policy. The upstream fix (Gitea PR #39501, companion PR #39507, released in v28.1.0) tightens the condition to isPrivate.Has() && repo.IsPrivate != isPrivate.Value() && (isPrivate.Value() || !setting.Repository.ForcePrivate || ctx.Doer.IsAdmin), so a non-admin can no longer flip a repository to public when FORCE_PRIVATE is on, while administrators and explicitly-private requests remain unaffected. The vulnerability maps to CWE-863 in the authorization-decision category: the code made a permission decision on a request-controlled option without re-checking the governing site policy.
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:L/A:N
Exploited over network git push with low complexity (AV:N/AC:L); requires an authenticated repo-creating user (PR:L); policy bypass exposes a repository and alters its enforced visibility (C:L/I:L), no availability impact.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
2DescriptionCVE.org
With [repository] FORCE_PRIVATE = true, Gitea creates new repositories as private, but the post-receive hook still applied the repo.private=false push option to an empty repository created by push. Any user who can create repositories could make their new repository public in violation of the instance policy. The default configuration is not affected.
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-94065
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB