Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Any authenticated user can trigger migration in default configs; file:// read and internal HTTP access constitute scope change with high confidentiality impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
Gitea prior to 1.27.0 contains a server-side request forgery vulnerability that allows authenticated attackers to bypass SSRF protections by exploiting HTTP fetch operations in migration and OAuth avatar code paths that use Go's default http.Get without a custom DialContext. Attackers can supply arbitrary URLs through release asset download URLs, pull-request patch URLs, or OAuth avatar endpoints to reach internal services, cloud instance-metadata endpoints, or read local files such as the application configuration containing database credentials and signing secrets, with exfiltrated content persisted as migration release assets for later retrieval.
AnalysisAI
SSRF protection bypass in Gitea prior to 1.27.0 exposes internal services, cloud instance-metadata endpoints (e.g., AWS IMDSv1 at 169.254.169.254), and local files - including the application configuration containing database credentials and signing secrets - to authenticated attackers. Three HTTP fetch code paths in the migration and OAuth avatar subsystems use Go's raw http.Get() rather than the hardened hostmatcher.NewDialContext() transport used elsewhere, completely circumventing Gitea's built-in SSRF defenses. A publicly available proof-of-concept is included in the GHSA advisory; no confirmed active exploitation (CISA KEV) has been identified at time of analysis.
Technical ContextAI
The vulnerability (CWE-918, Server-Side Request Forgery) stems from an inconsistency in Gitea's Go codebase: while migration clone and webhook operations correctly use a custom DialContext via hostmatcher.NewDialContext() that validates resolved IPs against an allow/block list, three separate code paths fall back to Go's net/http.DefaultClient, which performs no such validation. Specifically, modules/uri/uri.go (line 32) uses http.Get() for HTTP/HTTPS URIs and os.Open() for file:// URIs; this function is called from services/migrations/gitea_uploader.go at line 340 (release asset download) and line 586 (PR patch fetch), and from services/migrations/dump.go at lines 312 and 453. Additionally, routers/web/auth/oauth.go (line 306) uses http.Get() to fetch OAuth avatar URLs without any hostmatcher filtering. The explicit file:// scheme handler in uri.Open() further enables arbitrary local file reads beyond network-based SSRF. Affected products are all Gitea releases from 0 through 1.26.4 (CPE: cpe:2.3:a:gitea:gitea:*:*:*:*:*:*:*:*).
RemediationAI
Upgrade Gitea to version 1.27.0 or later, which replaces the unprotected http.Get() calls with the hostmatcher-backed transport already used for migration clones and webhooks; the patch commit is b969123b7fac51c88daab5cb64e5b2f4abd53288 (https://github.com/go-gitea/gitea/commit/b969123b7fac51c88daab5cb64e5b2f4abd53288). If immediate upgrade is not feasible, set DISABLE_MIGRATIONS = true in the [repository] section of app.ini to remove the migration code paths entirely, at the cost of disabling all repository migration functionality. Disabling OAuth login (if not operationally required) eliminates the avatar fetch vector. Deploy host-level egress filtering on the Gitea server to block RFC 1918 ranges and the link-local range 169.254.0.0/16; note this does not address the file:// local file read path and is not a substitute for patching. Advisory reference: https://github.com/go-gitea/gitea/security/advisories/GHSA-2wm4-vwp6-v7xc.
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
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
Missing Authorization in GitHub repository go-gitea/gitea prior to 1.16.4. Rated high severity (CVSS 7.1), this vulnerab
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allVendor StatusVendor
SUSE
Severity: ImportantShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-53617
GHSA-685p-fm6j-c445