Skip to main content

Forgejo CVE-2026-119545

| EUVDEUVD-2026-113810 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-30 VulnCheck GHSA-877c-6q9f-v4cw
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    POST crafted OpenID identifier to /user/login/openid
  2. Exploit
    Server performs blind OpenID discovery GET
  3. Execution
    Redirect toward internal, loopback, or cloud-metadata address
  4. Impact
    Infer reachable hosts, ports, and services

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

The OpenID sign-in feature must be enabled on the Forgejo instance - the GHSA advisory states the /user/login/openid discovery path fetches the user-supplied provider URL server-side via openid-go/http.DefaultClient with no hostmatcher, no IP filter, no CSRF and no authentication only 'when OpenID sign-in is enabled.' OpenID sign-in is not enabled by default, so this is the primary limiting factor: instances without it are not exposed via this vector. Where it is enabled, no authentication or user interaction is required (PR:N/UI:N), the endpoint is reachable by any remote attacker over the network, and affected versions are Forgejo through 15.0.11, 16.0.0-16.0.7, and 17.0.0-17.0.1. The impact is further limited by the SSRF being blind (discovery GET requests), suited to port scanning and probing of loopback, cloud metadata, and internal addresses rather than wholesale retrieval of internal responses.

Impact

The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N, score 6.9, MEDIUM) describes an unauthenticated, network-reachable, low-complexity SSRF whose only direct impact is low confidentiality - consistent with the description's 'blind discovery GET requests' used for port scanning and probing rather than full response exfiltration. The vuln.today Decision label is this_month, not act_now or emergency, which matches a medium-severity blind SSRF. No EPSS score and no CISA KEV status were provided in the input, so exploitation probability and active-exploitation signals cannot be weighed; absence here is not evidence of safety but should not be read as active exploitation either. A key limiting factor tempers the AV:N/PR:N reading: the GHSA advisory states the OpenID discovery path is only reachable 'when OpenID sign-in is enabled,' which is not the default configuration, so the unauthenticated-internet exposure applies only to instances that have turned the feature on. Net assessment: a genuine but config-gated, mostly-blind SSRF - a real but non-emergency priority for operators who have OpenID sign-in enabled, lower priority for those who do not. Note: the formal severity is MEDIUM, so this is not a high-CVSS item; its interest comes from being unauthenticated on exposed, OpenID-enabled instances.

Exploit ScenarioDerived

An attacker on the internet sends a crafted POST to /user/login/openid on a Forgejo instance that has OpenID sign-in enabled, supplying an arbitrary OpenID identifier URL pointing at a loopback, cloud metadata (e.g. 169.254.169.254), or internal RFC1918/CGNAT address. The server-side OpenID discovery logic then issues a blind GET request to that target, letting the attacker infer which internal hosts and ports respond, for reconnaissance of the internal network. The attack is unauthenticated and low-complexity per the CVSS vector; a public PoC reference exists (abraxaslabs research write-up and the upstream GHSA, which bundles a run_poc.sh), though it is not confirmed in the input as verified working exploit code for this specific Forgejo path.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

Unauthenticated blind server-side request forgery in Forgejo (through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1) lets anyone who can reach the instance POST a crafted OpenID identifier to /user/login/openid and force the server to issue discovery GET requests against loopback, cloud metadata and internal addresses for port scanning and probing. Exposure depends entirely on the OpenID sign-in feature being enabled, which is not the default; where it is enabled no credentials or user interaction are required. The impact is limited to low confidentiality because the requests are blind and responses are not returned to the attacker - the flaw is not in CISA KEV, so no confirmed active exploitation has been reported, although the upstream advisory publishes a proof-of-concept reproduction script.

RemediationAI

Apply the upstream fix: Gitea resolves this in 1.27.0 via PR https://github.com/go-gitea/gitea/pull/38426 (commit 645b10087d6794557f6a038af7f3824a3b2bc5e1) per GHSA-2fcr-jfvc-vgg2, so Forgejo administrators should move to a Forgejo release that carries the corresponding patch - the available data confirms Forgejo 17.0.1 and earlier as affected but does not name the exact Forgejo fix version, so verify the patched tag in the Codeberg repository (https://codeberg.org/forgejo/forgejo) before upgrading. If an immediate upgrade is not possible, the decisive compensating control is to disable OpenID sign-in on the instance, which removes the /user/login/openid discovery path entirely and therefore eliminates this vector, at the cost of losing federated OpenID login for users; instances that never enabled OpenID sign-in were not exposed through this endpoint. As a secondary containment measure, restrict outbound traffic from the Forgejo host so it cannot reach link-local metadata endpoints and internal management ranges, accepting that overly broad egress blocking will also break legitimate webhook delivery and repository migration.

Affected VersionsENISA

Forgejo 0 ≤15.0.11
Forgejo 17.0.0 ≤17.0.1
Forgejo 16.0.0 ≤16.0.7

Affected Packages

euvd forgejo no fix

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 flaw is CWE-918 server-side request forgery in Forgejo's OpenID 2.0 sign-in flow. The handler at routers/web/auth/openid.go:99 passes the user-supplied identifier directly to openid.RedirectURL(), which the openid-go library dereferences server-side using http.DefaultClient to perform provider discovery - no hostmatcher, no IP allow/deny filter, no CSRF token and no authentication gate. This is a notable departure from Forgejo/Gitea's other outbound-HTTP paths (webhook delivery in services/webhook/deliver.go and repository migration in services/migrations/http_client.go), which route through modules/hostmatcher using hostmatcher.NewDialContext and a net.Dialer.Control callback that screens resolved IPs before connect. Because the discovery result is consumed by the server rather than echoed back to the requester, the SSRF is blind: the attacker can infer reachability and timing (port scanning, probing of loopback, CGNAT, RFC 1918 and cloud metadata endpoints) but does not receive the internal response body. The same root issue is documented in the shared Gitea codebase under GHSA-2fcr-jfvc-vgg2, whose research writeup and PoC bundle (run_poc.sh) exercise the OpenID primitive alongside two hostmatcher-classifier gaps; the OpenID finding is specifically raised for the /user/login/openid form. The trigger conditions are described (a POSTed identifier URL is fetched server-side during discovery) but no additional exploitation mechanics beyond that are stated in the available sources.

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

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.8 MEDIUM

Unauthenticated network request to /user/login/openid (AV:N/AC:L/PR:N/UI:N); server reaches internal systems so S:C; blind discovery yields only low confidentiality, no integrity/availability impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Forgejo through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1 contains a server-side request forgery vulnerability that allows unauthenticated attackers to make the server issue requests by submitting arbitrary OpenID identifier URLs. Attackers can POST crafted identifiers to /user/login/openid to trigger blind discovery GET requests to loopback, cloud metadata, and internal addresses for port scanning and probing.

Threat Intelligence Overview

EPSS Score
0.4%
Top 61% exploitable
Prevalence
Medium
self-hosted Git forge, moderate adoption, not universally deployed
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2026-89094 CRITICAL
9.9 Sep 10

Remote code execution in Forgejo before 16.0.4 allows an authenticated user who can supply a template repository to run

CVE-2025-68937 CRITICAL
9.5 Dec 26

Forgejo before 13.0.2 (and the 11 LTS line before 11.0.7) mishandles out-of-repository symlink destinations when generat

CVE-2023-49946 CRITICAL
9.1 Dec 03

In Forgejo before 1.20.5-1, certain endpoints do not check whether an object belongs to a repository for which permissio

CVE-2023-49947 HIGH
7.5 Dec 03

Forgejo before 1.20.5-1 allows 2FA bypass when docker login uses Basic Authentication. Rated high severity (CVSS 7.5), t

CVE-2026-119546 MEDIUM
6.8 Oct 30

Forgejo's restore-repo CLI can be induced to read files outside the dump directory - including repository configuration

CVE-2026-82556 LOW POC
2.1 Aug 30

Server-side request forgery in Forgejo up to 15.0.4 allows authenticated users to bypass the repository migration IP all

CVE-2026-59102 LOW POC
2.1 Jul 02

Stored XSS in Forgejo before 15.0.3 allows authenticated users to execute arbitrary JavaScript in other users' browsers

CVE-2026-119547 MEDIUM
5.3 Oct 30

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

CVE-2023-49948 MEDIUM
5.3 Dec 03

Forgejo before 1.20.5-1 allows remote attackers to test for the existence of private user accounts by appending .rss (or

CVE-2026-90679 MEDIUM
4.3 Sep 13

Identity spoofing in Forgejo's ActivityPub federation allows a remote attacker who controls any single valid ActivityPub

CVE-2026-89151 LOW
3.5 Sep 11

Restricted API token authorization bypass in Forgejo before 16.0.4 (and before 15.0.8 on the 15.x branch) allows authent

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy