CVE-2026-90679
MediumCVSS 4.3Exploitation Probability (EPSS)
Low risk6th percentile - higher than 6% of all known CVEs
Summary
Forgejo 13.0.0 through 16.0.4, when "[federation] ENABLED = true" is set, has a spoofing issue affecting identity integrity but not allowing account takeover or content modification. It does not verify that the HTTP Signature on an incoming ActivityPub activity was produced by the key belonging to the actor named in the activity body. A remote attacker hosting a single valid ActivityPub actor and keypair can submit signature-valid activities attributed to any actor identity.
Risk Assessment
The vulnerability allows spoofing any actor in the ActivityPub federation, potentially leading to disinformation and undermining identity trust in federated instances. It does not enable account takeover or content modification but can be used for social engineering.
Recommendation
Update Forgejo to a version later than 16.0.4 if a fix is available. If federation is not needed, disable it; otherwise, monitor for unusual federation activities.
Other vulnerabilities in Forgejo
See all- CVE-2026-89094Critical
Forgejo before 16.0.4 allows remote code execution via a crafted template repository because template expansion on files in .forgejo/template is mishandled.
- CVE-2025-68937Critical
Forgejo before 13.0.2 allows attackers to write to unintended files, and possibly obtain server shell access, because of mishandling of out-of-repository symlink destinations for template repositories. This is also fixed for 11 LTS in 11.0.7 and later.
- CVE-2026-89151Low
Forgejo before 16.0.4 allows use of restricted API tokens for unintended access to the "allow maintainer edit" feature.
- CVE-2026-82556Medium
Vulnerability in Forgejo up to 15.0.4 in the net.LookupIP function of is_migrate_allowed.go allows remote server-side request forgery (SSRF). The attack can be initiated remotely, and the exploit is public.
- CVE-2026-59102Medium
Forgejo before version 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.
Original NVD description (English source)
Forgejo 13.0.0 through 16.0.4, when "[federation] ENABLED = true" is set, has a spoofing issue that affects identity integrity but does not allow account takeover or content modification. It does not verify that the HTTP Signature on an incoming ActivityPub activity was produced by the key belonging to the actor named in the activity body. The signature verification in routers/api/v1/activitypub/reqsignature.go validates the request signature, but the inbox activity handlers subsequently read the acting identity from the attacker-controlled JSON body without binding it to the verified signing key. Additionally, the signed Digest header is not recomputed against the received request body. A remote attacker who hosts a single valid ActivityPub actor and keypair can therefore submit signature-valid activities attributed to any actor identity they name.

