Skip to main content

Vikunja EUVDEUVD-2026-103303

| CVE-2026-111918 MEDIUM
Incorrect Authorization (CWE-863)
2026-10-17 VulnCheck GHSA-mjqg-gwhm-xr66
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege tenant user
  2. Delivery
    Repoint default_project_id and delete Inbox to reach zero accessible projects
  3. Exploit
    Create saved filter with empty filter string
  4. Execution
    Fail-open search returns all instance tasks
  5. Impact
    Bulk-write cross-tenant task_positions rows for DoS/integrity violation

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

Requires a valid authenticated account on the Vikunja instance (PR:L) AND a specific account state - zero accessible projects - which the attacker can engineer by repointing default_project_id and deleting their Inbox. The trigger is the normal SavedFilter.Create flow using a saved filter with an EMPTY filter string and no search string, which causes RecalculateTaskPositions (with addExistingTasksToView=true) to run a search whose project scope collapses to nothing and whose WHERE clause is dropped by go-xorm, returning every task instance-wide. Limiting factors that reduce real-world risk: exploitation is impossible for anonymous/unauthenticated attackers, the impact is meaningful mainly in multi-tenant deployments (single-tenant instances see no cross-tenant exposure), the attacker gains no read access to other tenants' task contents, and the user must deliberately reach the unusual zero-accessible-projects state rather than it being a default configuration.

Impact

This is a moderate-severity, authenticated authorization flaw (CWE-863), not a critical issue despite the network attack vector. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L) scoring 5.3 is internally consistent with the description: exploitation requires an authenticated low-privilege account (PR:L), is network-reachable and low-complexity, yields no confidentiality impact (the attacker still cannot read other tenants' task contents) but low integrity and low availability impact via cross-tenant writes and write amplification. No EPSS score, CISA KEV listing, SSVC decision, or public POC was supplied, so there is no signal of active or probable exploitation - exploitation status is therefore 'no public exploit identified at time of analysis.' The realistic risk is a logged-in, same-instance abuser degrading integrity/availability in multi-tenant deployments, rather than an externally weaponizable mass-exploitation threat; the low VC and the requirement for a non-default account state (zero accessible projects) further cap real-world urgency. Note a data conflict to verify with the vendor: the description states the fix is 2.7.0 and the flawed behavior is described as present 'in v2.6.0,' while the GitHub package metadata lists 'fixed in: None' for the range >= 1.0.0-rc0, <= 2.6.0 - treat 2.7.0 as the likely fixed version but confirm against the GHSA advisory.

Exploit ScenarioDerived

An authenticated low-privilege user on a shared multi-tenant Vikunja instance manipulates their account into having zero accessible projects (deleting their Inbox after repointing default_project_id), then creates a saved filter with an empty filter string. Because the position-recalculation search fails open and loses its project scope, the server writes task_positions rows for every task in the entire instance - including other tenants' tasks - into views owned by the attacker, producing a single-request write-amplification primitive that scales with instance size for denial of service. No public exploit code is identified at time of analysis, and the attack is low-complexity but requires a valid account.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Oct 17, 2026

An improper authorization flaw in Vikunja's saved-filter creation flow lets any authenticated user who has engineered a zero-accessible-projects account state cause RecalculateTaskPositions to write task_positions rows for every task on the instance, including tasks belonging to other tenants. Triggering it requires a saved filter created with an empty filter string and no search string, which collapses the project scope and drops the WHERE clause entirely, producing a single-request write-amplification primitive that scales with instance size and enables denial of service plus cross-tenant integrity violations. Vikunja versions from 1.0.0-rc0 through 2.6.0 are affected and 2.7.0 contains the fix; the flaw is authenticated-only (PR:L per the assessed vector), yields no read access to other tenants' task contents, and is only materially impactful in multi-tenant deployments - no public exploit code was identified at time of analysis and there is no confirmed active exploitation (CISA KEV).

RemediationAI

Upgrade to Vikunja 2.7.0 or later, which is the vendor-released patch for this issue; verify the upgrade against the GitHub advisory at https://github.com/go-vikunja/vikunja/security/advisories/GHSA-fprf-r6rv-xg99. Because the fix is version-based and no backport is documented in the available data, pin the Go module go/code.vikunja.io/api to a build derived from 2.7.0+ and rebuild any self-compiled instances. If immediate upgrade is not possible, compensating controls include restricting saved-filter creation to trusted roles or administrators (trade-off: loses a commonly used end-user feature), auditing and removing saved filters that have an empty filter string and no search string (trade-off: point-in-time only, new ones can be created), and denying or tightly monitoring changes to a user's default_project_id or deletion of the Inbox project, since reaching the zero-accessible-projects precondition is what arms the bug (trade-off: default_project_id changes and inbox deletion are legitimate user actions and blocking them degrades usability). Operators of multi-tenant instances should also scan task_positions for rows whose task_id belongs to a project the owning view's user cannot access and purge them, and should treat instances where users share a database across tenants as the priority upgrade population; single-tenant deployments face only a self-inflicted denial-of-service risk via write amplification. Monitoring for bursts of position-row inserts following saved-filter creation provides a detection signal but is not a preventive control.

Affected VersionsENISA

vikunja 1.0.0-rc0 <2.7.0

Affected Packages

go code.vikunja.io/api no fix
euvd vikunja fix: 2.7.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 maintains task ordering for kanban and list views in a shared task_positions table keyed by (task_id, project_view_id). When a saved filter is created, SavedFilter.Create (pkg/models/saved_filters.go) calls CreateDefaultViewsForProject (pkg/models/project_view.go), which for each default view - four per filter - invokes RecalculateTaskPositions (pkg/models/task_position.go) with addExistingTasksToView set to true. For filter views (view.ProjectID < -1) the project scope is reset to zero and the saved filter string injected; scope is then derived in getRelevantProjectsFromCollection (pkg/models/task_collection.go), which for ProjectID == 0 returns only the projects the requesting user can access. In dbTaskSearcher.Search (pkg/models/task_search.go) the WHERE clause is assembled as builder.And(builder.Or(projectIDCond, favoritesCond), where, filterCond); projectIDCond is populated only when the resolved project ID list is non-empty, favoritesCond is never requested by this path, an empty filter string yields no filter condition, and no search string yields no where clause. go-xorm's condition builders silently discard invalid children, so the query degrades to an unqualified SELECT over the tasks table, and the results are written back unconditionally after deleting the view's existing position rows and bulk-inserting new ones. This violates the invariant established in the fix for GHSA-w39f-h553-h2mx that position writes must be scoped by project read access - a classic CWE-863 incorrect authorization failure in which an access-control predicate is omitted rather than explicitly denied (failing open instead of closed).

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 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Authenticated low-priv user over network with low complexity (PR:L/AC:L); no read of other tenants' data (C:N); cross-tenant row writes and write-amplification give I:L and A:L.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/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
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 17, 2026 - 20:16 EUVD

DescriptionCVE.org

Vikunja from 1.0.0-rc0 before 2.7.0 contains an improper authorization vulnerability in RecalculateTaskPositions that allows authenticated users with zero accessible projects to write task_positions rows for all tasks instance-wide. Attackers can delete their Inbox after repointing default_project_id, then create empty-filter saved filters to persist cross-tenant references and amplify writes for denial of service.

Threat Intelligence Overview

Prevalence
Low
niche self-hosted open-source task manager, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
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.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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-68581 HIGH POC
8.6 Aug 02

Principal type confusion in Vikunja (versions 0.22.0-2.3.0) allows an authenticated low-privilege attacker to fully cont

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

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