Forgejo before 15.0.3 contains a stored cross-site scripting vulnerability that allows authenticated attackers to execute arbitrary JavaScript in other users' browsers by setting a full name containing an HTML payload and triggering an Actions run
Affects forgejoSource GCVE Database
Not known to be exploited · CVSS 5.4 Medium : upgrade to 15.0.3 when convenient.
Data as of 29 Oct 2026, 19:04 UTC
- EPSS
- 0.3% chance of exploitation in 30 days – higher than 28% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 15.0.3
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:NExploitation evidence
Disclosed: evidence found.
CVE published 2 Jul 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 29 Oct 2026.
What to do
Upgrade forgejo/forgejo to 15.0.3.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
GitHubforgejo/forgejopkg:github/forgejo/forgejoOther threats | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
If you cannot patch yet, consider disabling the DEFAULT_SHOW_FULL_NAME option to prevent the vulnerable code path from being triggered. Additionally, restrict user permissions to limit who can set full names or trigger Actions runs if feasible.
Description
Forgejo before 15.0.3 contains a stored cross-site scripting vulnerability that allows authenticated attackers to execute arbitrary JavaScript in other users' browsers by setting a full name containing an HTML payload and triggering an Actions run. When the DEFAULT_SHOW_FULL_NAME option is enabled, the run description is assembled server-side with the user's display name interpolated into an HTML string via a translation function that does not escape its arguments, and the frontend renders the result using a Vue v-html binding, causing script execution for any user who views the affected Actions run page.
References
- nvd.nist.gov/vuln/detail/CVE-2026-59102 (opens in a new tab)
- codeberg.org/forgejo/forgejo/pulls/13002 (opens in a new tab)
- codeberg.org/forgejo/forgejo/src/branch/forgejo/release-notes-published/15.0.3.md (opens in a new tab)
- github.com/geo-chen/oss/blob/main/forgejo.md (opens in a new tab)
- vulncheck.com/advisories/forgejo-stored-xss-via-actions-run-full-name-rendering (opens in a new tab)