{"id":"CVE-2026-104627","title":"Gitea OpenID account linking without session binding","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-contr…","severity":"medium","cvss":5.4,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N","cvssSource":"adp","cwe":["CWE-287","CWE-352"],"vendor":"Gitea","product":"gitea.dev","affected":["gitea.dev <= 28.1.0"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial","timestamp":"2026-10-19T20:20:04.646263Z"},"published":"2026-10-18","updated":"2026-10-19","sourceUpdated":"2026-10-19T20:20:15.460Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-104627","references":[{"url":"https://github.com/go-gitea/gitea/security/advisories/GHSA-mf69-7pqq-86vx","label":"GitHub Security Advisory GHSA-mf69-7pqq-86vx"},{"url":"https://github.com/go-gitea/gitea/pull/39642","label":"Fix: go-gitea/gitea pull request #39642"},{"url":"https://github.com/go-gitea/gitea/pull/39744","label":"Fix backport to release/v28: go-gitea/gitea pull request #39744"},{"url":"https://blog.gitea.com/release-of-28.2.0/","label":"Gitea 28.2.0 release announcement"},{"url":"https://github.com/go-gitea/gitea/releases/tag/v28.2.0","label":"go-gitea/gitea v28.2.0 release"}],"tags":["cve.org"],"ingestedAt":"2026-10-18T19:51:12.339Z","epss":0.00119,"epssPercentile":0.01753,"slug":"CVE-2026-104627","body":"## Overview\n\nThe 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.\n\n## Affected\n\n- `gitea.dev <= 28.1.0`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":30,"depthScoreParts":{"impact":29.7,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[{"seq":225192,"id":"CVE-2026-104627","ts":1792442531156,"field":"cvss","old":null,"new":"5.4"},{"seq":225191,"id":"CVE-2026-104627","ts":1792442531156,"field":"severity","old":"none","new":"medium"}]}