Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as repository admin
-
DeliveryConfigure push mirror/migration to policy-allowed endpoint
-
ExploitEndpoint returns HTTP redirect to internal address
-
ExecutionGit client follows redirect, skips policy recheck
-
ImpactReach host-policy-blocked internal service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated repository administrator to configure a push mirror, wiki remote check, or pull-request-head migration whose remote URL targets an endpoint explicitly permitted by the outbound host policy (ALLOWED_HOST_LIST / allowed domains) that then issues an HTTP redirect to an address the policy would otherwise deny. Exploitation is meaningfully LIMITED by: (1) repo-admin privilege to set remote URLs (contradicting the vector's PR:N); (2) a restrictive outbound host policy must actually be configured, otherwise there is no boundary to bypass; (3) the attacker must control or locate an allowed endpoint that redirects to the desired internal target; and (4) realized impact is bounded by which internal services are reachable from the server and what the Git client can do with them (the advisory states impact depends on policy and reachable services). Not exploitable where no egress allow-list is enforced or where a proxy handles egress restriction. |
| Impact | This is CWE-918 server-side request forgery in Gitea: initial remote URLs are validated against the outbound host policy, but subsequent raw Git operations follow HTTP redirects without revalidating the destination, letting a policy-allowed endpoint redirect Gitea's Git client to an internal address the policy would block. The official CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N = 7.5) marks it network-reachable and unauthenticated, but the description explicitly states the actor is 'a repository administrator' configuring push mirrors, wiki remote checks, or migrated-PR-head fetches - a clear CONFLICT: PR:N implies no auth, yet exploitation requires an authenticated repo-admin who can set a remote URL, so the real-world privilege bar is higher than the headline score suggests. Exploitation signals are weak: EPSS is 0.15% (3rd percentile), there is no CISA KEV listing and no public exploit identified at time of analysis, indicating no observed or likely widespread exploitation. The I:H/C:N impact rating is also debatable for an SSRF - reachability of internal services typically yields confidentiality exposure rather than pure integrity impact, and the advisory itself says impact 'depends on the configured policy and the internal services reachable,' so the fixed I:H is an upper-bound assumption. Net: a legitimate security boundary bypass worth patching, but a moderate priority (authenticated admin precondition, config-dependent impact, low EPSS, no exploitation evidence) rather than a drop-everything network-unauthenticated RCE that the 7.5/PR:N framing might imply. |
| Exploit ScenarioDerived | A repository administrator (or an attacker who has compromised such an account) configures a push mirror or migration whose remote URL points at an endpoint permitted by ALLOWED_HOST_LIST but which returns an HTTP redirect to an internal-only address such as a cloud metadata service or an intranet admin panel. Because the raw Git operation follows the redirect without re-checking the outbound host policy, Gitea's server issues requests to that blocked internal destination. No public proof-of-concept is identified; the attack requires network access to the Gitea instance plus repo-admin rights, with complexity low once a redirecting allowed endpoint is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Server-side request forgery in Gitea (versions up to and including 1.27.3) lets a repository administrator bypass the configured outbound host policy: Gitea validates the initial remote URL for push mirrors, wiki remote checks, and migrated pull-request heads, but the raw Git operation that follows will chase an HTTP redirect to an address the policy would otherwise block, causing the server's Git client to reach internal services. Exploitation is meaningfully constrained - it requires repository-administrator privileges, a restrictive egress allow-list must actually be configured, and the attacker must control or locate an allow-listed endpoint that redirects to the desired internal target - so the realized impact is bounded by which internal services are reachable from the Gitea host. EPSS is 0.15% (3rd percentile), no public exploit identified at time of analysis, and there is no CISA KEV listing, so exploitation appears opportunistic and low-volume rather than confirmed actively exploited. Note that the published CVSS vector (7.5, PR:N) overstates the privilege requirement; our assessment rates it PR:L with limited confidentiality and integrity impact.
RemediationAI
Vendor-released patch: Gitea 28.0.0 (the release referenced by the vendor, containing upstream fix PR https://github.com/go-gitea/gitea/pull/39426); upgrade to 28.0.0 or later, and consult the advisory at https://github.com/go-gitea/gitea/security/advisories/GHSA-g4hw-fg4c-89mq and the release notes at https://github.com/go-gitea/gitea/releases/tag/v28.0.0 and https://blog.gitea.com/release-of-28.0.0/. If immediate upgrade is not possible, set the new egress controls to their tightest form once available by running [security] EGRESS_MODE = strict so that every destination - public hosts included - must appear explicitly in the allow-list, keep the allow-list as narrow as possible (prefer specific CIDR/port entries over '*'), and use [migrations] BLOCKED_HOST_LIST to deny metadata ranges outright; be aware that in the older lax behaviour portless entries cover all ports and every public address is permitted, which is precisely the condition that makes this bypass useful. Reduce the attack surface by restricting who holds repository-administrator rights and by disabling push mirrors, wiki remote checks, and pull-request-head migration for untrusted users, since the flaw requires such an administrator to point a remote URL at an allow-listed redirector. Alternatively, force Git egress through a forward proxy that performs its own allow-listing - but note the trade-off documented in the fix: when a proxy is configured Gitea stops enforcing ALLOWED_HOST_LIST on the proxied target, so the proxy must fully take over that duty or the exposure remains. The new implementation denies reserved addresses such as link-local and cloud metadata endpoints, which closes the highest-value SSRF targets; until patched, consider host-level egress filtering to block the Gitea server from reaching 169.254.0.0/16 and internal management networks.
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
This is CWE-918 (server-side request forgery) arising from a validate-then-fetch split in Gitea's egress handling. Gitea enforces an outbound host policy - historically expressed as [security] ALLOWED_HOST_LIST and [migrations] ALLOWED_DOMAINS / BLOCKED_DOMAINS / ALLOW_LOCALNETWORKS - against the remote URL supplied for a push mirror, a wiki remote check, or a migrated pull-request head. That validation happens on the literal, initially configured URL, but the subsequent raw Git transport (clone/fetch/ls-remote) performs its own HTTP requests and follows 3xx redirects without re-checking the redirect destination, so any host permitted by the policy can act as an open redirector into loopback, RFC 1918, CGNAT, link-local, or cloud metadata addresses. The upstream fix (PR #39426, shipped in the 28.0.0 release) restructures this into a dedicated gitproxy service and reworks the configuration model: a new EGRESS_MODE toggle with 'lax' (public addresses always allowed, private/loopback/CGNAT checked against the list) and 'strict' (every destination must be explicitly allowed), port-scoped allow-list entries such as 192.168.1.0/24:3000, [2001:db8::/32]:9090, bracketed port sets *.mydomain.com:[80|443|3000-3010], and a BLOCKED_HOST_LIST for migrations and mirrors. Importantly, the new documentation states that when an HTTP/SOCKS5 proxy is configured (via [proxy], [git.config] http.proxy, or the environment), Gitea no longer enforces its egress lists on the proxied target and the proxy server is expected to apply the restriction - a caveat that also matters for anyone treating a proxy as their mitigation.
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:N/UI:N/S:U/C:N/I:H/A:N
Repo-admin must configure the remote URL so PR:L (not PR:N); a redirecting allowed endpoint makes AC:L; SSRF yields limited, config-dependent internal reachability so C:L/I:L, A:N.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
3DescriptionCVE.org
Gitea validated the initial remote URL for push mirrors, wiki remote checks, and fetches of migrated pull request heads, but the subsequent raw Git operations followed HTTP redirects without revalidating the destination. A repository administrator using a policy-allowed endpoint that redirects could make Gitea's Git client send requests to an address that the outbound host policy would otherwise block. The impact depends on the configured policy and the internal services reachable from the server.
Technical POC Analysis
CWE-918 (SSRF) via a check-then-use gap in Gitea's outbound URL policy enforcement.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Gitea instances running versions up to and including 1.27.3 carry a high-severity server-side request forgery flaw that could allow a repository administrator to reach internal services the organization's outbound egress policy is intended to block, potentially exposing internal APIs, administrative interfaces, or cloud metadata endpoints. Exploitation is meaningfully constrained - it requires repository-administrator privileges, an actual restrictive egress allow-list, and an allow-listed endpoint the attacker controls or can locate that redirects to the internal target - so exposure concentrates in organizations that grant broad repository-admin rights or host Gitea inside the trusted network perimeter. Leadership should care because Gitea is a developer-facing system with elevated trust, and no vendor-released patch has been identified at time of analysis.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce default-deny outbound egress from the Gitea host to internal ranges, loopback, link-local and cloud metadata endpoints; block HTTP redirects at the egress proxy; disable push mirrors, wiki remote checks, and pull-request migration features; and restrict repository-administrator privileges to trusted personnel.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
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-93916
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB