Skip to main content

Gitea CVE-2026-89430

| EUVDEUVD-2026-93912 HIGH
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
8.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
    Authenticate and create an admin-owned repo
  2. Delivery
    Configure push mirror to benign external host
  3. Exploit
    Repoint DNS to internal Git service
  4. Execution
    Trigger mirror synchronization, bypassing allow/block list
  5. Impact
    Force-push repository contents to internal target

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Requires: (1) an authenticated Gitea account, which inherently grants administrator rights over any repository the user creates, so no pre-existing elevated privilege is needed; (2) the push-mirror feature in use on a repository; (3) attacker control over DNS resolution of the configured remote hostname so it resolves to an allowed address when the mirror is created and later to a blocked/internal address at synchronization time (the CWE-367 time-of-check/time-of-use gap); and (4) an internal Git service that is network-reachable from the Gitea server. Limiting factors: exploitation only matters where the [migrations] allow/block lists are actually configured to protect internal ranges, the attacker must be able to influence DNS/name resolution, and value is realized only if reachable internal Git endpoints exist. No end-user interaction is required.

Impact

Signals are consistent and point to a real-but-bounded risk rather than a mass-exploitation emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N) describes a network-reachable flaw requiring only low privileges - and the description clarifies that "administrator access to a repository" is trivially obtained because any user gets admin on repositories they create themselves, so this effectively reduces to any authenticated Gitea user. However, EPSS is very low (0.12%, 2nd percentile), there is no CISA KEV listing, and SSVC reports Exploitation: none and Automatable: no, all of which argue against widespread opportunistic attacks. The CWE-367 (TOCTOU) nature explains the low automatability: exploitation depends on the attacker controlling DNS resolution so a name validated as safe at mirror-creation time later resolves to a blocked/internal address, a deliberate, targeted setup rather than a drive-by. SSVC Technical Impact: total aligns with the C:H/I:H rating because a successful attack can force-push to and read responses from internal Git services. Net assessment: a genuine SSRF/TOCTOU bypass worth patching on internet-exposed or multi-tenant Gitea instances, but current telemetry (no POC, no KEV, low EPSS) indicates it is not under active or automated exploitation. Note one tension to verify: the official Gitea CVSS uses S:U, but reaching separate internal Git services is arguably a scope change (see assessed vector).

Exploit ScenarioDerived

An attacker registers (or already has) a normal Gitea account, creates a repository they administer, and configures a push mirror pointing at a hostname that currently resolves to an allowed external address so it passes the [migrations] allow/block check. They then repoint that hostname's DNS to an internal-only Git service; on the next scheduled or manually triggered synchronization Gitea passes the stored address straight to git push, reaching the internal target and force-pushing the attacker's repository contents onto it. No public exploit code was identified at the time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

Push mirror synchronization in Gitea 1.27.3 and earlier reuses a remote address that was validated against the [migrations] allow/block lists only once, at mirror-creation time, so a hostname that later resolves to a blocked or internal address is still handed to git push - a time-of-check/time-of-use flaw (CWE-367). An authenticated user who administers a repository (which includes any repository they create themselves) can therefore aim a push mirror at an internal Git service and force-push the repository's contents to it, assuming attacker influence over name resolution and a network-reachable internal endpoint. The assessed severity is high (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N) because scope changes and both confidentiality and integrity of internal Git services are affected, but no public exploit code has been identified at time of analysis and EPSS is low (0.12%, 2nd percentile), with SSVC recording no observed exploitation and a non-automatable attack path - a real but bounded risk rather than a mass-exploitation emergency.

RemediationAI

Upgrade to Gitea 28.0.0, the vendor-released patched version referenced by the release notes and tag (https://blog.gitea.com/release-of-28.0.0/ and https://github.com/go-gitea/gitea/releases/tag/v28.0.0); operators backporting rather than jumping releases should track the upstream changes in PRs 39010 and https://github.com/go-gitea/gitea/pull/39426 and review the advisory at https://github.com/go-gitea/gitea/security/advisories/GHSA-hcgw-r9gf-8mph. Where upgrading is delayed, apply targeted compensating controls rather than generic hardening: enforce outbound egress filtering from the Gitea host so it can only reach the specific Git endpoints it legitimately mirrors to, which directly defeats the DNS-change primitive but will break any unpredicted mirror targets and must be maintained alongside mirror inventory; verify and pin name resolution for mirror remotes (for example by resolving via a controlled resolver or using only hosts whose DNS is not attacker-influenceable), accepting the operational overhead of keeping those records current; re-audit all existing push mirrors, since the stored address is the value that gets reused at sync time, and re-create any mirror whose hostname is not under trusted DNS control; and, if push mirroring is not required, disable the feature entirely (Administration settings) at the cost of losing synchronization functionality. Restricting who may create repositories reduces the attacker pool - because create-your-own-repo already grants the repository admin rights needed for this attack - but this is only viable where self-service repository creation is not a business requirement.

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

Gitea's push mirroring feature synchronizes a local repository to a remote Git endpoint by invoking git push against a stored remote URL. Administrative configuration provides [migrations] allow and block lists (ALLOWED_DOMAINS / BLOCKED_DOMAINS) intended to prevent repository migration and mirroring from reaching internal or otherwise restricted addresses. The implementation validated the configured remote address at creation time and then reused the stored value on every subsequent synchronization without re-resolving or re-checking it, creating a classic CWE-367 time-of-check/time-of-use gap: DNS for the hostname can resolve to an allowed address during creation and to an internal address at sync time, or DNS rebinding can achieve the same effect. The fix touches Gitea's git plumbing - modules/git, modules/git/gitcmd (command/error handling, remote resolution and stderr classification for push/clone operations) and the API migration router - rather than a single isolated check, which indicates the remote address is now handled more defensively along the command-execution path. The CVSS vector confirms a network-reachable, low-privilege (PR:L) attack requiring no user interaction, with the assessed vector (S:C/C:H/I:H/A:N) reflecting that the compromised boundary extends beyond the Gitea instance to internal Git infrastructure.

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

Any authenticated user administers self-created repos so PR:L; attacker fully controls both DNS states so AC:L; impact reaches separate internal Git services (SSRF read plus force-push) giving S:C, C:H, I:H, A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/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
High
Integrity
High
Availability
None

Lifecycle Timeline

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

DescriptionCVE.org

Gitea validated a push mirror's remote address against the [migrations] allow and block lists only when the mirror was created. Each synchronization passed the stored address directly to git push, so a name that later resolved to a blocked or internal address was still reached. A user with administrator access to a repository, which includes repositories they create themselves, could aim push mirror synchronization at internal Git services and force-push the repository's contents to them.

Technical POC Analysis

CWE-367 (time-of-check/time-of-use), with CWE-918 (SSRF) as the downstream consequence.

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 at version 1.27.3 and earlier contain a mirroring flaw that lets any authenticated user who administers a repository - including repositories they create themselves - redirect a push mirror to an internal Git service and overwrite its contents, because the address allow/block list is checked only once at mirror creation and never revalidated. Confidentiality and integrity of internal source code repositories are both at risk, and the scope change means exposure can extend beyond the Gitea host into adjacent internal systems reachable from the mirroring server. Because Gitea is commonly self-hosted and used to host proprietary source code, leadership should treat this as a source-code integrity and internal network exposure issue, not a routine application bug.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable or restrict the push mirror feature; limit repository administration and self-service repository creation to trusted users; enforce egress filtering so Gitea hosts cannot reach internal Git endpoints or RFC1918/link-local addresses; revalidate mirror target hostnames at push time via an egress proxy or DNS pinning; audit and remediate existing mirror configurations that resolve to internal or blocked addresses; monitor DNS resolution changes and anomalous outbound git push activity.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
popular self-hosted Git server, common in dev environments but not ubiquitous
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 HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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-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