Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as user with migration rights
-
ExploitPoint allow-listed hostname DNS at loopback/private IP
-
ExecutionStart repository migration to that host
-
ImpactReach internal services via SSRF
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
|
| Exploitation Conditions | Requires all of: (1) the optional [migrations] ALLOWED_DOMAINS allow-list is configured - the description states instances without it are not affected; (2) ALLOW_LOCALNETWORKS=false (the control being bypassed); (3) an authenticated account with permission to start repository migrations (CVSS PR:L); and (4) attacker control over the DNS resolution of a hostname already present in ALLOWED_DOMAINS, so it can be pointed at loopback or private addresses. Limiting factors that reduce realistic risk: the allow-list feature is not enabled by default, exploitation needs valid credentials with migration rights, and the attacker must control authoritative DNS for an allow-listed name - none of which apply to a default installation. |
| Impact | This is a server-side request forgery / network-restriction bypass in Gitea, not an authentication bypass as the input tag suggests. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N, 7.7 HIGH) is network-reachable but explicitly authenticated (PR:L): the attacker must already have an account permitted to start repository migrations. The scope change (S:C) and C:H correctly reflect that successful exploitation pivots from Gitea into separate internal systems. Real-world risk is materially lower than the raw 7.7 implies because exploitation is gated behind two conditions the attacker does not fully control: the instance must have the optional [migrations] ALLOWED_DOMAINS allow-list configured (the description states instances without it are not affected), and the attacker must control DNS for a hostname already on that allow-list. No EPSS score, KEV listing, or public POC is present in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. I assess AC:H rather than the input's AC:L, since requiring an allow-listed hostname under attacker DNS control is a condition beyond the attacker's control and not present in default deployments. CWE is listed as N/A in the input but this is functionally CWE-918 (SSRF) via a TOCTOU/DNS-rebinding allow-list gap. Net: a credible internal-pivot risk for the subset of instances using ALLOWED_DOMAINS, but a configuration-dependent, authenticated issue rather than a mass-exploitable unauthenticated flaw. |
| Exploit ScenarioDerived | An authenticated Gitea user with migration privileges, on an instance configured with [migrations] ALLOWED_DOMAINS, sets DNS for a hostname on the allow-list to resolve to 127.0.0.1 or an RFC1918 address. They start a repository migration against that hostname; Gitea accepts it on name match without re-checking the resolved address, so the outbound request reaches internal services despite ALLOW_LOCALNETWORKS=false. No public exploit code is identified at time of analysis. |
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 1.27.3 and earlier allows an authenticated user with permission to start repository migrations to reach internal services by pointing an allow-listed migration hostname at a loopback or private address, bypassing the ALLOW_LOCALNETWORKS=false restriction. Exploitation requires the optional [migrations] ALLOWED_DOMAINS allow-list to be configured (default installations are unaffected by this specific bypass), valid migration rights (CVSS PR:L, authenticated), and attacker control over DNS resolution for a hostname already present in that allow-list. No public exploit code or confirmed active exploitation was identified at time of analysis; the root-cause class is network-restriction bypass (SSRF-style) rather than an authentication bypass, despite that tag in the source data.
RemediationAI
Vendor-released patch: upgrade to Gitea 28.0.0 (or later), which replaces ALLOW_LOCALNETWORKS/ALLOWED_DOMAINS/BLOCKED_DOMAINS with ALLOWED_HOST_LIST and BLOCKED_HOST_LIST plus an EGRESS_MODE setting - see GHSA-fqjr-23c8-gg9m, https://github.com/go-gitea/gitea/pull/39426 and the release notes at https://github.com/go-gitea/gitea/releases/tag/v28.0.0. Where upgrading immediately is not possible, the most effective compensating control is to remove the [migrations] ALLOWED_DOMAINS entry entirely so the private/loopback block is applied unconditionally to every migration URL; the trade-off is that blank means all hosts are allowed, so arbitrary public hosts become reachable for migrations (private and loopback targets stay blocked). Alternatively, if the allow-list must be kept, restrict it to names whose DNS you fully control and pin/serve those names from an internal resolver that cannot be re-pointed at private space, and block DNS rebinding via short-TTL/internal-only resolution. Because the attacker must already be able to start repository migrations, tightening the organization/team permission that grants migration rights (repository import/creation) narrows the exposure to trusted users only. Finally, treat the Gitea host as untrusted for egress: firewall or egress-proxy outbound traffic from the Gitea server so it cannot reach loopback-adjacent management interfaces, RFC1918 ranges, or cloud metadata endpoints (169.254.0.0/16), and be aware that the upstream 28.0.0 fix explicitly does not enforce egress lists on requests routed through a configured HTTP/SOCKS proxy - in that deployment the proxy configuration must carry the restriction itself.
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
Gitea's repository-migration feature fetches remote repositories over HTTP/Git, and the [migrations] ALLOWED_DOMAINS allow-list was intended to constrain which hosts can be contacted. The vulnerability is a resolution/validation ordering flaw: when a migration URL's hostname string matched ALLOWED_DOMAINS, Gitea accepted it without re-checking the address(es) the name resolved to, so the ALLOW_LOCALNETWORKS=false guard - which is supposed to reject any migration URL resolving to loopback or RFC 1918/RFC 1122/RFC 4632/RFC 4291 private space - could be skipped. Anyone who controls authoritative DNS for an allow-listed hostname (or can exploit a DNS-rebinding window) can therefore make that name resolve to 127.0.0.1, an RFC1918 address, or an internal service address, causing the Gitea server itself to issue requests into the internal network. This is a classic SSRF / CWE-918 pattern (no CWE is assigned in the supplied data), with scope change (S:C) because the vulnerable component's privileges are used to reach resources outside its security authority, and confidentiality impact only (C:H/I:N/A:N) since responses can be read but not modified through this path. The upstream fix in Gitea 28.0.0 (PR #39426, GHSA-fqjr-23c8-gg9m) reworks the model entirely, replacing ALLOW_LOCALNETWORKS, ALLOWED_DOMAINS and BLOCKED_DOMAINS with ALLOWED_HOST_LIST and BLOCKED_HOST_LIST plus an EGRESS_MODE of lax or strict, with dot-anchored host matching, CIDR/port specifications, and built-in loopback/private/CGNAT/reserved-address denials; the diff also documents a deliberate caveat that when an HTTP/SOCKS proxy is configured, Gitea does not enforce the egress lists on the proxied target and the proxy is expected to do so.
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:C/C:H/I:N/A:N
AV:N and PR:L since an authenticated migration user acts over the network; AC:H because it requires a non-default allow-list plus an allow-listed hostname under attacker DNS control; S:C/C:H as SSRF reaches separate internal systems.
Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).
CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
Lifecycle Timeline
3DescriptionCVE.org
When [migrations] ALLOWED_DOMAINS was configured, a hostname matching the allow list was accepted without checking its resolved address against the local-network restrictions. A user who can start repository migrations and control the DNS of an allowed hostname could make it resolve to loopback or private addresses and bypass ALLOW_LOCALNETWORKS = false, reaching internal services from the Gitea server. Instances without ALLOWED_DOMAINS configured are not affected by this specific bypass.
Technical POC Analysis
Bug class: server-side request forgery (CWE-918).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Gitea versions 1.27.3 and earlier contain a server-side request forgery flaw that allows an authenticated user with repository migration rights to reach internal network services when the optional migration domain allow-list is configured. This could expose sensitive internal systems or data to a user who already has migration permissions, affecting organizations that rely on Gitea for code collaboration and have that non-default configuration enabled. No public exploit identified at time of analysis, and no vendor-released patch is currently available, so leadership should prioritize interim controls and upgrade planning.
No vendor-released patch identified at time of analysis; interim mitigations include disabling or tightly restricting [migrations] ALLOWED_DOMAINS, removing unnecessary migration rights, blocking Gitea server egress to loopback/private/link-local ranges, pinning DNS or monitoring for allow-listed hostname resolution changes, and reviewing logs for unauthorized internal service access.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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
Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us
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
EUVD-2026-93908
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB