Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as user with migration rights
-
DeliverySubmit migration URL targeting 169.254.169.254
-
ExploitAllow-list match bypasses local-network block
-
ExecutionServer fetches internal/metadata endpoint
-
ImpactRead reserved-address response
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 | Exploitation requires a specific non-default configuration: |
| Impact | This is a genuinely low-to-moderate priority SSRF (CWE-918), not an urgent critical issue. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N = 4.3 Medium) correctly reflects a network-reachable but privilege-gated flaw with only limited confidentiality impact and no integrity or availability impact. Crucially, the vulnerability is NOT present in default configurations: it requires an administrator to have set |
| Exploit ScenarioDerived | On a Gitea instance (≤1.27.3) whose administrator has set |
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's repository migration feature lets an authenticated user who is permitted to start migrations force the Gitea server to connect to reserved or link-local addresses, including the cloud metadata endpoint 169.254.169.254. The flaw only manifests in a non-default configuration where the administrator has set [migrations] ALLOWED_DOMAINS to a wildcard such as * or a hostname wildcard, which bypasses the intended ALLOW_LOCALNETWORKS = false protection because the local-network block list omitted reserved/link-local ranges and hostname allow-list matching was accepted irrespective of the resolved IP. Impact is bounded to reachability and read-style access from the server (no code execution or data modification), authentication is required per the CVSS vector (PR:L), and no public exploit has been identified at time of analysis, so this is a low-to-moderate priority issue whose real-world severity rises mainly where a reachable instance metadata service exists on the Gitea host.
RemediationAI
Vendor-released patch: upgrade to Gitea 28.0.0 (release tag v28.0.0, advisory GHSA-54w9-6cc5-9wj9, fix PR go-gitea/gitea#39426), which explicitly denies reserved/link-local and cloud metadata targets, applies address checks to resolved endpoints, and replaces ALLOWED_DOMAINS/BLOCKED_DOMAINS with ALLOWED_HOST_LIST/BLOCKED_HOST_LIST under an EGRESS_MODE setting. If upgrading immediately is not possible, remove the wildcard: set [migrations] ALLOWED_DOMAINS to the minimal explicit list of trusted public hosts (no * and no broad *.domain entries), keep ALLOW_LOCALNETWORKS = false, and add explicit BLOCKED_DOMAINS entries for the metadata and link-local space (169.254.169.254, 169.254.0.0/16, and the IPv6 equivalent fe80::/10) - accepting that this block list approach is fragile because it is string/range based and does not re-validate the resolved IP after DNS rebinding, so it should be paired with network-layer controls. Restrict who can create migrations/mirrors through repository and organization permissions so that only trusted accounts hold that privilege, since the attack requires an authenticated user with migration rights; note the trade-off that tightening these permissions may disrupt legitimate import workflows. Block outbound egress from the Gitea host to link-local and metadata ranges at the firewall or security group, and enforce IMDSv2 (or disable IMDS entirely) on cloud instances - this is the most durable compensating control and does not depend on Gitea's allow-list logic. Finally, be aware that if a proxy is configured for migrations or Git remotes, Gitea does not enforce these egress lists on the proxied target, so the proxy itself must be configured to deny internal, loopback, and link-local destinations; disabling the proxy for migrations is the alternative, at the cost of losing the proxy's own filtering.
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 vulnerability is CWE-918 (Server-Side Request Forgery) in Gitea's migration/mirroring subsystem, which performs outbound HTTP fetches against user-supplied repository URLs. Gitea layers several egress controls over these fetches: [migrations] ALLOWED_DOMAINS (an allow list that supports wildcards such as * and *.example.com) and BLOCKED_DOMAINS, plus ALLOW_LOCALNETWORKS (default false) intended to reject migration URLs that resolve to private, loopback, or otherwise internal addresses. The defect is twofold: the local-network deny list covered RFC 1918/RFC 1122 ranges but not reserved or link-local space such as 169.254.0.0/16 (the range containing the 169.254.169.254 cloud metadata address), and once a hostname matched the allow list it was accepted even if DNS resolution produced a blocked or reserved address, i.e. the address check was not applied to the resolved endpoint. The upstream fix (PR 39426, shipped in Gitea 28.0.0) reworks this whole area, renaming the options to ALLOWED_HOST_LIST/BLOCKED_HOST_LIST, introducing an EGRESS_MODE of lax (allow public, restrict private/loopback/CGNAT) or strict (require explicit allow of every address), adding per-entry port specifications and ranges, dot-anchored hostname matching so notexample.com cannot match example.com, requiring punycode for IDN names, and explicitly denying reserved addresses such as link-local and cloud metadata. Notably, the same change documents that when a proxy is configured for migrations or Git remotes, Gitea does not enforce the egress lists on the proxied target at all, leaving that to the proxy - a related exposure administrators should account for.
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:N/A:N
Network-reachable migration feature (AV:N), no special timing (AC:L), requires an authenticated user who can start migrations (PR:L), no victim interaction (UI:N); SSRF discloses limited data (C:L) with no integrity/availability impact.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
2DescriptionCVE.org
With [migrations] ALLOWED_DOMAINS set to a matching entry such as * or a hostname wildcard, Gitea's migration URL validation could permit reserved and link-local addresses, such as 169.254.169.254, even when ALLOW_LOCALNETWORKS = false. The local-network block list did not cover these ranges, and a hostname matching the allow list was accepted regardless of its resolved address. A user who can start migrations on such an instance could reach these addresses from the Gitea server; the default empty ALLOWED_DOMAINS 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
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-93922
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB