CVE-2026-104627 json
Gitea OpenID account linking without session binding
published 2026-10-18 21 d ago modified 2026-10-19 20 d ago also EUVD-2026-103982
- cvss
- 5.4
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.1%
- EPSS 0.1% chance of exploitation in 30 days, percentile 1%
- public exploits
- 0
- none known
Summary
The Gitea OpenID association callback in the security settings accepted a positive OpenID 2.0 assertion without checking that the signed-in user had started the linking. Because OpenID 2.0 allows unsolicited assertions, an attacker-controlled OpenID provider could attach the attacker's identity to the account of a signed-in victim who opened a crafted link, and the attacker could then sign in as the victim through OpenID login, which does not apply the local TOTP or WebAuthn checks. The callback now requires a time-limited `state` value bound to the user.
Patch / fix
- github.com/go-gitea/gitea#39642 pull request
- github.com/go-gitea/gitea#39744 pull request
- github.com/go-gitea/gitea/releases/tag/v28.2.0 release
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 20 d ago
Exploit prediction
0.12% chance of exploitation in the next 30 days, higher than 1% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CISA ADP | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N |
| CNA | 3.1 | 5.4 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N |
Affected products
- Gitea Gitea
Classification
References
-
github.com
/go-gitea/gitea/pull/39642
patch
-
github.com
/go-gitea/gitea/pull/39744
patch
-
github.com
/go-gitea/gitea/security/advisories/GHSA-mf69-7pqq-86vx
vendor-advisory
-
blog.gitea.com
/release-of-28.2.0/
release-notes
-
github.com
/go-gitea/gitea/releases/tag/v28.2.0
release-notes
Sources
- CVE List CVE-2026-104627
- NVD CVE-2026-104627
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.