Skip to main content

Vikunja EUVDEUVD-2026-51991

| CVE-2026-68581 HIGH
Incorrect Authorization (CWE-863)
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with low-privilege Vikunja account
  2. Delivery
    Query user search API to obtain target's numeric ID
  3. Exploit
    Create link shares on attacker-owned project until link-share sequence reaches target ID
  4. Execution
    Extract link-share JWT with matching numeric ID
  5. Persist
    Call /api/v1/tokens endpoints using link-share JWT as victim
  6. Impact
    Issue new API token with attacker-chosen scopes under victim identity

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must hold a valid, authenticated Vikunja user account with write access to at least one project (required to create link shares). The link-share feature must be enabled on the instance (it is enabled by default). The attacker must be able to discover the target user's numeric ID, which is possible via the authenticated user search endpoint - this limits attacks to users who are searchable within the instance. The core operational constraint is that the attacker must create link shares sequentially until the link-share ID counter matches the target user's numeric ID; this is practical for low-numbered user IDs (e.g., IDs 1-50 require at most a few dozen share creations) but becomes progressively expensive for high user IDs on active instances where the link-share counter may already exceed the target. No special server configuration, non-default settings, or elevated privilege beyond a standard authenticated account is required beyond the link-share write access described.

Impact

The CVSS 4.0 score of 8.6 with vector AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N reflects the high-impact outcome once the ID collision is achieved, and the network-accessible attack surface. However, the attack carries a sequential prerequisite: the attacker must create link shares on a project they control until the link-share ID counter reaches the target user's numeric ID. This adds meaningful operational friction - targeting high-numbered user IDs could require hundreds or thousands of share creations - suggesting the effective attack complexity is higher than AC:L implies in practice, particularly for users registered later in a large instance. For small or lightly-used instances with low user IDs, exploitation is far more feasible. No EPSS score was provided; absent KEV listing and public POC, immediate mass-exploitation risk is low, but the impact ceiling (API-level account takeover with arbitrary token scopes) is severe for targeted attacks. The confidentiality and integrity impacts are both high - the attacker can exfiltrate existing token metadata and issue new tokens with full permission scopes under the victim's identity. No availability impact applies.

Exploit ScenarioDerived

An authenticated attacker with a low-privilege Vikunja account uses the authenticated user search API to identify a target user's numeric ID - for example, ID 7. The attacker then creates link shares on a project they own in a loop until the link-share auto-increment sequence assigns ID 7 to a new share, then extracts the resulting link-share JWT. Presenting this JWT to PUT /api/v1/tokens, the attacker mints a new API token under the victim's identity with read_all and update scopes on tasks, achieving persistent API-level access to the victim's data without any interaction from the victim.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 02, 2026

Principal type confusion in Vikunja (versions 0.22.0-2.3.0) allows an authenticated low-privilege attacker to fully control any target user's API token management by exploiting a numeric ID collision between the independent link-share and user ID sequences. The /api/v1/tokens endpoints resolve the caller identity exclusively via the generic web.Auth.GetID() interface without validating whether the authenticated principal is a user or a link-share, meaning a link-share JWT whose integer ID equals a victim's user ID is accepted as that user's credential. No CISA KEV listing and no public exploit code have been identified at time of analysis, but successful exploitation yields the ability to mint new API tokens under a victim's identity with attacker-chosen permission scopes, constituting a functional account takeover at the API level.

RemediationAI

Upgrade to Vikunja 2.4.0 or later; this is the vendor-confirmed patched release documented in the security advisory at https://github.com/go-vikunja/vikunja/security/advisories/GHSA-vvcv-vpph-h844. The fixes are delivered via two commits: e6b25bd57b537ef9a72b5acdadf446ca5ef77bfa (introducing rights-check functions and owner-scoped queries) and 95b7e673fb5ee407498fa4b13e8b4c57847a4a0b (completing the principal-type validation). If immediate upgrade is not feasible, deploying a reverse proxy rule to block unauthenticated or link-share-authenticated requests to GET /api/v1/tokens, PUT /api/v1/tokens, and DELETE /api/v1/tokens/* will prevent exploitation via this path, but may break legitimate API token management for users authenticating via those endpoints. Alternatively, disabling link-share creation instance-wide removes the prerequisite for the ID collision attack entirely, though this eliminates the public sharing feature for all users. Both workarounds should be treated as temporary bridges to the 2.4.0 upgrade.

Affected VersionsENISA

vikunja 0.22.0 <2.4.0

Affected Packages

go code.vikunja.io/api fix: 2.4.0
euvd vikunja fix: 2.4.0

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 an open-source, self-hosted task management application written in Go (CPE: cpe:2.3:a:go-vikunja:vikunja:*:*:*:*:*:*:*:*). The root cause is CWE-863 (Incorrect Authorization) - specifically, a principal-type confusion arising from a polymorphic authentication abstraction. The Go web.Auth interface exposes a single GetID() method returning an integer. Both User and LinkShare model types implement this interface, but their IDs are drawn from separate, independent auto-increment database sequences. The /api/v1/tokens endpoints (GET, PUT, DELETE /tokens) call a.GetID() to scope API token operations without ever asserting that a is of concrete type User. The commit diff confirms that prior to 2.4.0, ReadAll, Create, and Delete functions on APIToken used a.GetID() for ownership scoping with no type guard. The fix introduces pkg/models/api_tokens_rights.go, adding CanDelete and CanCreate authorization checks that verify token.OwnerID against the principal's ID, and the second commit (95b7e673) presumably adds the type assertion that distinguishes link-share principals from user principals at the route level.

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

Vendor (VulnCheck) PRIMARY 8.6 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.8 MEDIUM

Network-accessible endpoint requires authenticated low-privilege account and sequential link-share ID enumeration to achieve collision (AC:H); full confidentiality and integrity impact via API token takeover; no availability impact.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Vikunja versions 0.22.0 through 2.3.0 fail to validate the principal type in API token management. Because user IDs and link-share IDs are independent numeric sequences and both resolve through a generic web.Auth.GetID() interface, a link-share JWT whose numeric ID equals a target user's ID is treated as that user by the /api/v1/tokens endpoints. An authenticated attacker can obtain a target's numeric user ID via authenticated user search, then create link shares on an attacker-writable project until the link-share sequence reaches that value, and use the resulting link-share JWT to list, create, and delete the target user's API tokens (including issuing a new token with attacker-chosen scopes under the target's permissions). Fixed in version 2.4.0.

Executive ViewAI

Why It Matters

Vikunja versions 0.22.0-2.3.0 contain a privilege escalation vulnerability (CVSS 8.6) enabling authenticated low-privilege users to assume control of any other user's API tokens through numeric ID collision, achieving functional account takeover at the API level. All organizations running these versions face immediate risk of unauthorized API access, token theft, and impersonation attacks; no public exploit code has been identified, but the vulnerability is trivial to exploit once an attacker gains any authenticated user access.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
niche self-hosted task management app, limited enterprise footprint
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

63
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-27575 CRITICAL POC
9.1 Feb 25

Weak password policy in Vikunja task management before 2.0.0 allows users to set trivially guessable passwords. PoC avai

CVE-2026-27616 HIGH POC
7.3 Feb 25

Stored cross-site scripting (XSS) in Vikunja prior to version 2.0.0 allows authenticated attackers to steal authenticati

CVE-2026-27819 HIGH POC
7.2 Feb 25

Vikunja before version 2.0.0 contains a path traversal vulnerability in its backup restoration function that fails to va

CVE-2026-27116 MEDIUM POC
6.1 Feb 25

Vikunja is an open-source self-hosted task management platform. [CVSS 6.1 MEDIUM]

CVE-2026-28268 CRITICAL
9.8 Feb 27

Business logic vulnerability in Vikunja task management platform before 2.1.0 allows incomplete resource cleanup, potent

CVE-2026-68582 CRITICAL POC
9.3 Aug 02

Cross-tenant information disclosure in the self-hosted task manager Vikunja (0.24.0 through 2.3.0) lets a holder of any

CVE-2026-56765 CRITICAL
9.3 Jul 10

Instance-wide data breach in Vikunja before 2.2.1 lets remote attackers exfiltrate and destroy every file attachment acr

CVE-2026-91973 HIGH POC
8.7 Sep 15

Vikunja instances before 2.6.0 expose CalDAV BasicAuth endpoints (/dav, /.well-known, and /feeds) that are not covered b

CVE-2026-91972 HIGH POC
8.7 Sep 15

Vikunja versions before 2.6.0 ship authentication endpoints under /api/v2 (login, register, password-reset, and OAuth to

CVE-2026-91985 HIGH POC
8.7 Sep 15

Vikunja prior to 2.6.0 leaks the secret hash that backs a project's link shares through its single-share read endpoint,

CVE-2026-57458 HIGH
8.1 Oct 09

Privilege escalation in Vikunja 2.3.0 allows a user who holds a narrowly scoped API token (permissions {"oauth":["author

CVE-2026-62376 HIGH
8.1 Oct 09

Plaintext storage of password-reset, email-confirmation and account-deletion tokens in Vikunja prior to 2.4.0 allows any

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy