CVE-2026-55066
nicheAuthorization Bypass in Vikunja Exposes Cross-Project Task Data via Sequential IDs
Vikunja, an open-source self-hosted task management platform, contains an authorization flaw (CWE-639) in its kanban bucket-task endpoint prior to version 2.4.0: TaskBucket.CanUpdate only validates the project, view, and bucket taken from the URL, never checking whether the task_id supplied in the request body actually belongs to that project. An authenticated user can exploit this by sending a POST to /api/v1/projects/{project}/views/{view}/buckets/{bucket}/tasks with an arbitrary task_id; because task identifiers are global sequential values, the endpoint returns the victim task's contents via Task.ReadOne and, when the chosen bucket is a done bucket, updates the task's completion state. The attacker therefore gains unauthorized read access to task details outside their own project (cross-tenant information disclosure) and can tamper with task done/undone metadata (integrity impact), through both the v1 and v2 API routes that share this model. Any Vikunja deployment running a version before 2.4.0 is affected, with the greatest impact on multi-project or multi-tenant instances where users should only see their own tasks. There is no known public exploit, the flaw is not in CISA's KEV catalog, and EPSS puts 30-day exploitation probability at roughly 0.3%, so no active exploitation is currently known.
What to do: Upgrade Vikunja to version 2.4.0 or later, which adds the missing task-level permission check. Until patched, prioritize instances with multiple projects or tenants, review application logs for POST requests to the bucket-task endpoints referencing task IDs outside the caller's project, and be alert to unexpected changes in task done/undone state.
| Vikunja (self-hosted task management platform) | All versions prior to 2.4.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Vikunja is an open-source self-hosted task management platform. Prior to 2.4.0, POST /api/v1/projects/{project}/views/{view}/buckets/{bucket}/tasks accepts a body supplied task_id but TaskBucket.CanUpdate in pkg/models/kanban_task_bucket.go authorizes only the project, view, and bucket from the URL. updateTaskBucket then calls Task.ReadOne without a separate task permission check, returns the victim task contents, and can update the task done state when the attacker chooses a done bucket. Because task identifiers are global sequential values, an authenticated user can enumerate cross-tenant tasks and modify their completion metadata through both the v1 and v2 routes that share this model. This issue is fixed in version 2.4.0.
- Weakness
- CWE-639
- Vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
In the news0 stories
No ingested article mentions this CVE yet.