Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain authenticated Forgejo account
-
DeliveryCraft migration URL with attacker-controlled hostname
-
ExploitSubmit repository migration request
-
ExecutionDNS rebinding causes net.LookupIP to return allowlisted IP at check time
-
PersistActual HTTP request resolves to internal IP, bypassing allowlist
-
ImpactServer fetches internal resource and returns data to attacker
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 valid authenticated user session on the target Forgejo instance (CVSS PR:L). The vulnerable path is specifically triggered by initiating a repository migration - the attacker must have permission to use the migration feature, which is available to regular authenticated users by default. The attacker must also control a DNS-resolvable hostname to stage the DNS rebinding payload. Exploitation is constrained by: (1) authentication - unauthenticated external attackers cannot trigger the path without first obtaining an account, which is trivial if self-registration is enabled but a meaningful barrier if registration is invite-only or admin-controlled; (2) the migration feature must be enabled and not restricted to administrators only; (3) the Forgejo server must have network reachability to the internal target for the SSRF to yield useful data. Instances where migration is admin-only or where the server is network-isolated from sensitive internal resources are significantly less exposed. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) indicates a network-reachable path with no attack complexity beyond holding an authenticated user account - a meaningful but real prerequisite on most self-hosted instances. Impact metrics VC:L/VI:L/VA:L reflect that SSRF typically yields partial internal network reconnaissance and limited service interaction rather than direct code execution. No EPSS score or KEV listing is present in the input, so exploitation frequency cannot be quantified; however, the public POC on Codeberg significantly lowers attacker skill requirements. The maintainer's explicit refusal to backport is the most operationally significant signal: every Forgejo deployment on v15 or v16 must self-apply the upstream commit or adopt compensating controls, with no routine package update available. The practical risk is highest on instances with open user registration, where an external attacker can trivially obtain the authenticated session needed to exploit the flaw, and where the Forgejo host has network access to internal services such as cloud metadata endpoints or private APIs. |
| Exploit ScenarioDerived | An attacker who holds or creates an authenticated account on a Forgejo instance initiates a repository migration using a URL pointing to an attacker-controlled hostname. The attacker manipulates DNS so that the hostname resolves to an allowlisted external IP at the moment |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Server-side request forgery in Forgejo up to 15.0.4 allows authenticated users to bypass the repository migration IP allowlist by manipulating net.LookupIP in the migration handler, causing the Forgejo server to issue requests to internal network resources that should be unreachable. The CVSS 4.0 vector confirms network-exploitable, low-privilege access with limited but real impact across confidentiality and integrity. Publicly available exploit code exists via Codeberg issue #13433, and the project maintainer has explicitly declined to backport the fix to v15 or v16, leaving those release lines permanently exposed absent a self-applied patch.
RemediationAI
The primary fix is manual application of upstream commit b313bb83f5ff22bcc0378e0e0ca7bbd58303f168 available at https://codeberg.org/forgejo/forgejo/commit/b313bb83f5ff22bcc0378e0e0ca7bbd58303f168; administrators should monitor pull request #13490 (https://codeberg.org/forgejo/forgejo/pulls/13490) for a tagged release incorporating the fix, as no patched release version has been confirmed at time of analysis. Because the maintainer explicitly will not backport to v15 or v16, organizations that cannot apply the patch directly should implement the following compensating controls: disable the repository migration feature entirely for non-administrator roles (eliminates the vulnerable code path but removes migration functionality for regular users); restrict instance registration to prevent new external accounts from being created (reduces attacker surface but does not protect against existing authenticated users); and place the Forgejo host in a network segment without access to sensitive internal services such as cloud metadata endpoints (169.254.169.254), internal APIs, or private registries (limits SSRF blast radius but does not eliminate the vulnerability). Each workaround carries operational trade-offs and should be evaluated against the deployment's threat model.
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
Forgejo is an independent open-source Git forge (fork of Gitea) written in Go. The vulnerable component is the repository migration allowlist enforcer at services/migrations/allowlist/is_migrate_allowed.go, which calls net.LookupIP to resolve a migration target hostname and compare the result against an administrator-configured IP allowlist. CWE-918 (Server-Side Request Forgery) arises here through a likely DNS rebinding or time-of-check/time-of-use race: the hostname is resolved and validated at allowlist-check time, but when the actual HTTP migration request is made the hostname may resolve to a different (internal) IP. Affected product identified by CPE cpe:2.3:a:n/a:forgejo:*:*:*:*:*:*:*:* covering all versions through 15.0.4. The upstream fix is commit b313bb83f5ff22bcc0378e0e0ca7bbd58303f168 in the Forgejo Codeberg repository.
Know when Forgejo 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Network-exploitable by authenticated users via the migration handler; SSRF yields limited internal network access with no availability impact and unchanged scope.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability was found in Forgejo up to 15.0.4. This issue affects the function net.LookupIP of the file services/migrations/allowlist/is_migrate_allowed.go of the component Repository Migration Handler. Performing a manipulation results in server-side request forgery. The attack can be initiated remotely. The exploit has been made public and could be used. The patch is named b313bb83f5ff22bcc0378e0e0ca7bbd58303f168. It is recommended to apply a patch to fix this issue. The project maintainer explains: "I don't intend to backport this to v15 or v16 as it is a breaking change."
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 Forgejo before 16.0.4 allows an authenticated user who can supply a template repository to run
Forgejo before 13.0.2 (and the 11 LTS line before 11.0.7) mishandles out-of-repository symlink destinations when generat
In Forgejo before 1.20.5-1, certain endpoints do not check whether an object belongs to a repository for which permissio
Forgejo before 1.20.5-1 allows 2FA bypass when docker login uses Basic Authentication. Rated high severity (CVSS 7.5), t
Unauthenticated blind server-side request forgery in Forgejo (through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through
Forgejo's restore-repo CLI can be induced to read files outside the dump directory - including repository configuration
Stored XSS in Forgejo before 15.0.3 allows authenticated users to execute arbitrary JavaScript in other users' browsers
Forgejo through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1 lets an authenticated user with a read:user-sc
Forgejo before 1.20.5-1 allows remote attackers to test for the existence of private user accounts by appending .rss (or
Identity spoofing in Forgejo's ActivityPub federation allows a remote attacker who controls any single valid ActivityPub
Restricted API token authorization bypass in Forgejo before 16.0.4 (and before 15.0.8 on the 15.x branch) allows authent
EUVD-2026-68278
GHSA-qcr2-8wjw-w786
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB