Skip to main content

Gitea EUVDEUVD-2026-94065

| CVE-2026-89182 MEDIUM
Incorrect Authorization (CWE-863)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
5.4
CVSS 3.1 · Vendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as user with repo-creation rights
  2. Exploit
    Create empty repository via git push
  3. Execution
    Supply repo.private=false push option
  4. Impact
    Post-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 [repository] FORCE_PRIVATE = true to be enabled on the Gitea instance; the default configuration is explicitly not affected. The attacker must be an authenticated user who holds repository-creation permission (CVSS PR:L), and must create a new, empty repository via git push while supplying the repo.private=false push option - the flaw lives in the post-receive hook's handling of that option on push-created empty repositories. Limiting factors: the vulnerable code path only triggers for a repository created by the push itself (not pre-existing repos), the operator must have opted into FORCE_PRIVATE, and admin-created repos/admin doers are unaffected by the fixed logic. Only instances on versions 1.27.0-28.0.0 are affected; v28.1.0 adds the (isPrivate.Value() || !setting.Repository.ForcePrivate || ctx.Doer.IsAdmin) guard.

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 [repository] FORCE_PRIVATE = true setting, so the exposed population is limited to the subset of instances deliberately enforcing mandatory-private repositories - precisely the environments where the bypass matters most. The impact is also bounded: a user makes their OWN newly pushed repository public, so this is a policy/governance bypass and metadata-exposure issue rather than theft of other users' private data. Net: a legitimate authorization-control defect worth patching on FORCE_PRIVATE instances, but it is correctly rated Medium and does not warrant emergency response; the input tag 'Authentication Bypass' overstates it - this is authorization, not authentication, bypass.

Exploit ScenarioDerived

On a Gitea instance hardened with [repository] FORCE_PRIVATE = true, a low-privileged but repo-creating user pushes to a brand-new repository and supplies the repo.private=false push option. The post-receive hook honors that option on the freshly created empty repository, publishing it publicly in violation of the instance's mandatory-private policy. No public exploit code was identified at time of analysis; the vendor fix in PR #39501 confirms the mechanism.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Gitea 1.27.0 ≤28.0.0

Affected Packages

euvd gitea no fix

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

Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2) PRIMARY 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).

CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
CVSS changed
Oct 07, 2026 - 12:22 NVD
5.4 (MEDIUM)
CVE Published
Oct 06, 2026 - 22:17 cve.org
UNKNOWN (no severity yet)

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

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
popular self-hosted Git service, common but not universally deployed
Data Quality
7 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Gitea

View all
CVE-2026-60004 CRITICAL POC
9.8

Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi

CVE-2026-27771 HIGH POC
8.2 Jul 03

Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r

CVE-2022-30781 HIGH POC
7.5 May 16

Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp

CVE-2020-14144 HIGH POC
7.2 Oct 16

The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir

CVE-2024-6886 CRITICAL POC
10.0 Aug 06

Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea

CVE-2026-72867 CRITICAL POC
9.9 Aug 10

Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us

CVE-2026-20896 CRITICAL POC
9.8 Jul 03

Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any

CVE-2026-59774 CRITICAL POC
9.8

Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by

CVE-2026-58053 CRITICAL POC
9.4 Jun 28

Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec

CVE-2019-11229 HIGH POC
8.8 Apr 15

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

CVE-2026-57894 HIGH POC
8.5 Jul 21

Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica

CVE-2026-24791 HIGH POC
8.1 Jun 17

Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy