Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessControl identity at configured issuer
-
DeliverySet email claim to victim address
-
ExploitSubmit token to Vikunja OIDC callback
-
ExecutionEmail-fallback links to victim's local account
-
ImpactFull session as victim, account takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires three specific conditions, all CONFIRMED by the advisory: (1) an administrator has enabled the per-provider emailfallback:true option, which defaults to false - a default install is NOT exploitable; (2) the configured OIDC issuer allows the attacker to assert the victim's unverified email, e.g. a self-service IdP (Keycloak/Authentik/Auth0/Dex with editable email), a mixed federation, or a multi-tenant Entra /common app - iss and aud are pinned, so the attacker controls only the email claim, not the issuer; (3) the victim has a pre-existing LOCAL (issuer=local) account that does NOT have TOTP enabled - the 2.3.0 enforceTOTPIfRequired gate protects TOTP users, and pure-SSO (non-local) accounts are not matched. Limiting factors: non-default configuration, dependence on the issuer's email-assertion policy, and the TOTP/local-account scoping substantially narrow real-world exposure despite the unauthenticated, no-interaction nature of the flaw. |
| Impact | This is a genuine high-priority flaw for the narrow population running the vulnerable configuration, but not a mass-exploitation emergency. Signals: the vendor CVSS 4.0 vector scores 7.5 with VC:H/VI:H/VA:H (full local-account takeover) and PR:N/UI:N (unauthenticated, no victim interaction), matching the well-understood nOAuth class (cf. Grafana CVE-2023-3128). No EPSS score, no CISA KEV listing, and no weaponized public exploit were provided, so exploitation is not confirmed in the wild. The vendor set AV:L with AT:P; this is questionable and conflicting - the attack is actually driven through Vikunja's network-facing OIDC callback, so the access vector looks network-reachable rather than local, while the real gating factor (attacker must coerce the issuer into emitting a token carrying the victim's unverified email) is better modeled as an attack requirement/complexity than as AV:L. VERIFY AV WITH VENDOR: the description and advisory imply a network login flow, yet the input vector says AV:L. The dominant risk limiter is configuration, not CVSS: the vulnerable path exists only when an admin has turned on the non-default per-provider emailfallback option, the IdP must let an attacker assert an arbitrary email, and the victim account must be a local (issuer=local) non-TOTP account. Net: treat as urgent (patch to 2.4.0) if you run OIDC emailfallback against a self-service or multi-tenant issuer; otherwise default installs are unaffected. |
| Exploit ScenarioDerived | An organization runs Vikunja with emailfallback enabled against a self-service or multi-tenant IdP (e.g. Keycloak/Authentik/Auth0/Dex with editable email, or a multi-tenant Entra /common app). An attacker controls an identity at that issuer, sets the email claim to a victim's address, and completes the OIDC callback to Vikunja. Because Vikunja links the SSO login to the victim's pre-existing local account using only the email claim - never checking email_verified/xms_edov and never requiring the password - the attacker receives a full session as the victim with no victim interaction. No public exploit code was identified, though the advisory documents the exact vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Unauthenticated account takeover in Vikunja 1.0.0 through 2.3.0 lets an attacker who can obtain an OpenID Connect token carrying a victim's email address log in as that victim with a full session and no victim interaction. The flaw only manifests when an administrator has enabled the non-default per-provider emailfallback option, under which Vikunja resolves an unknown (issuer, subject) pair to a pre-existing local username/password account using the email claim alone - it never inspects email_verified (or Microsoft's xms_edov) and never asks for the matched account's password. Practical exposure is narrow but real: it additionally requires an IdP that will assert a victim's unverified email (a self-service or multi-tenant issuer) and a victim local account that has no TOTP, which the 2.3.0 enforceTOTPIfRequired gate protects; there is no public exploit identified at time of analysis, and no KEV/EPSS signal has been provided, so this is a high-priority fix for the specific vulnerable configuration rather than an ongoing mass-exploitation event.
RemediationAI
Upgrade to Vikunja 2.4.0, the vendor-released patch, which gates account linking on a verified email (emailFallbackAllowed := provider.EmailFallback && bool(cl.EmailVerified)) and stops the email-only lookup when the claim is absent or false; the release is published at https://github.com/go-vikunja/vikunja/releases/tag/v2.4.0 and the fix commit is 7854f2729ab72000210b61c25929678fd6901630, with full details in advisory GHSA-xv7q-fvmc-jx96. If upgrading immediately is not possible, the single most effective compensating control is to disable the per-provider emailfallback option (set emailfallback: false) - it defaults to false, so affected deployments must have explicitly enabled it; the trade-off is that legitimate users whose (issuer, subject) identity changed will no longer be transparently relinked to their existing local account and may need administrative re-linking or a fresh account. Enabling TOTP on all local accounts is a partial mitigation, since the 2.3.0 enforceTOTPIfRequired gate blocks the session even if the email lookup succeeds, but it only shields users who actually enroll and does not fix the underlying identity-linking flaw. Administrators can also reduce the attack surface at the identity provider by disabling the emailfallback path for any issuer that permits self-service email edits - Keycloak, Authentik, Auth0, or Dex realms with user-editable email, mixed federations, and multi-tenant Microsoft Entra /common applications - and by tightening that issuer's email-assertion policy so unverified or spoofed addresses are never emitted; the trade-off is loss of federation flexibility and additional IdP-side configuration. None of these workarounds should be treated as equivalent to the 2.4.0 upgrade, which is the only change that validates the email_verified (and Microsoft xms_edov) signal in code.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Vikunja is a Go-based self-hosted task management platform, and the vulnerable logic lives in pkg/modules/auth/openid/openid.go, part of the go/code.vikunja.io/api module. Identity is normally pinned to the immutable (issuer, subject) pair from the OIDC ID token; when that lookup misses and the per-provider emailfallback flag is true, fallbackSearchUsers appends a synthetic lookup object, &user.User{Issuer: user.IssuerLocal, Email: cl.Email}, which the ORM's Get() resolves by ANDing all non-zero fields into WHERE issuer='local' AND email=?. Because every locally created account is stamped with Issuer="local" in user_create.go, any local account sharing the asserted email address matches, getOrCreateUser returns that row, and the callback mints a session without ever reading the stored password. The claims struct had no email_verified member and no code path consulted one, so the linked identity's provenance was never validated - a textbook improper-authentication failure (CWE-287) in the nOAuth class previously seen in Grafana CVE-2023-3128. Note that the earlier 2.3.0 fix for GHSA-8jvc-mcx6-r4cg added only a TOTP enforcement gate (enforceTOTPIfRequired), not a verified-email gate, leaving non-TOTP users exposed. The 2.4.0 patch introduces a boolish type that tolerantly decodes email_verified whether the IdP emits a JSON boolean or the string forms "true"/"false"/"1"/"0" (defaulting to false when absent), then derives emailFallbackAllowed := provider.EmailFallback && bool(cl.EmailVerified) and requires both the flag and a real, verified, non-empty email before any email-only lookup can run. Affected deployments are identified by CPE cpe:2.3:a:go-vikunja:vikunja:*:*:*:*:*:*:*:*.
Know when Vikunja 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
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Unauthenticated network OIDC callback with no victim interaction (AV:N/PR:N/UI:N), but attacker must coerce an issuer token asserting the victim's email plus non-default emailfallback config, so AC:H; full account takeover gives C/I/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Vikunja is an open-source self-hosted task management platform. In versions 1.0.0 through 2.3.0, when an administrator enables the per-provider emailfallback option on an OpenID Connect provider, Vikunja links an SSO login to a pre-existing local (username+password) account using only the email claim from the IdP. The fallback never checks an email_verified (or Microsoft xms_edov) signal and never requires the matched account's password. An attacker who can obtain a token from the configured issuer carrying a victim's email logs in as that victim with a full session, with no consent or interaction from the victim. Version 2.4.0 fixes the issue.
Technical POC Analysis
CWE-287 (Improper Authentication); the advisory also lists CWE-290 (Authentication Bypass by Spoofing) and CWE-345 (Insufficient Verification of Data Authenticity).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Vikunja versions 1.0.0 through 2.3.0 contain an account-takeover flaw that could allow a third party to obtain a full session as an existing user, exposing that user's projects, tasks, attachments, and any data reachable through the account. Exploitation is confined to deployments where administrators have enabled the non-default per-provider email fallback setting, where the identity provider will assert unverified email addresses, and where the targeted local account lacks TOTP. No public exploit has been identified at time of analysis and no vendor-released patch is available, so this should be treated as a configuration-hardening priority for the specific exposed deployments rather than a broad organizational emergency.
Disable the non-default per-provider emailfallback option in the Vikunja OpenID Connect configuration; enforce TOTP on all local accounts via the enforceTOTPIfRequired gate in 2.3.0; reject or remove identity providers that can assert unverified email addresses (self-service or multi-tenant issuers) and require email_verified=true or xms_edov; delete or migrate unnecessary local username/password accounts to OIDC-only authentication; and alert on sign-ins where a new (issuer, subject) pair binds to an existing account's email address.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Weak password policy in Vikunja task management before 2.0.0 allows users to set trivially guessable passwords. PoC avai
Stored cross-site scripting (XSS) in Vikunja prior to version 2.0.0 allows authenticated attackers to steal authenticati
Vikunja before version 2.0.0 contains a path traversal vulnerability in its backup restoration function that fails to va
Vikunja is an open-source self-hosted task management platform. [CVSS 6.1 MEDIUM]
Business logic vulnerability in Vikunja task management platform before 2.1.0 allows incomplete resource cleanup, potent
Cross-tenant information disclosure in the self-hosted task manager Vikunja (0.24.0 through 2.3.0) lets a holder of any
Instance-wide data breach in Vikunja before 2.2.1 lets remote attackers exfiltrate and destroy every file attachment acr
Vikunja instances before 2.6.0 expose CalDAV BasicAuth endpoints (/dav, /.well-known, and /feeds) that are not covered b
Vikunja versions before 2.6.0 ship authentication endpoints under /api/v2 (login, register, password-reset, and OAuth to
Vikunja prior to 2.6.0 leaks the secret hash that backs a project's link shares through its single-share read endpoint,
Principal type confusion in Vikunja (versions 0.22.0-2.3.0) allows an authenticated low-privilege attacker to fully cont
Privilege escalation in Vikunja 2.3.0 allows a user who holds a narrowly scoped API token (permissions {"oauth":["author
EUVD-2026-95993
GHSA-xv7q-fvmc-jx96
NVD
CVE.org
EPSS
Exploit-DB