Vulnerability · CVE-2026-111918
Vikunja: Saved filter creation with an empty filter string recalculates task positions across all tenants
Published Oct 9, 2026 · catalog updated Oct 18, 2026 · Vikunja: Saved filter creation
Open the advisory
Exploitation likelihood is not on this record for CVE-2026-111918. A missing EPSS score is not a low risk. Compare Vikunja: Saved filter creation with the linked advisory before you change production.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (Vikunja: Saved filter creation).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- EPSS is missing. A missing score is not a low risk.
- Severity
- Medium5.4
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- Not in the current FIRST EPSS dataset
- Remediation
- Advisory link
- Affected products
- Go code.vikunja.io/api
### Summary In Vikunja v2.6.0 the task position recalculation that runs when a saved filter view is created fails open when the requesting user has no accessible projects. Instead of aborting, the search that feeds the recalculation loses its project scope entirely and returns every task in the instance. The server then writes one row per task per view (four views per filter) into views owned by the requesting user, including rows that reference tasks of other tenants the user can never see. Any authenticated user can trigger this. The impact is a cross-tenant integrity violation, a single-request write amplification primitive that scales with instance size, and a violation of the invariant stated in the fix for GHSA-w39f-h553-h2mx that position writes are scoped by project read access. ### Details Vikunja computes kanban and list ordering in a shared table keyed by . When a saved filter is created, ( ) calls ( ) which, for every default view it creates, calls with ( ). ( ) builds a and, for filter views ( ), resets the project scope to zero and injects the saved filter's filter string. The scope of the subsequent search is derived from ( ), which for returns exactly the projects the requesting user can access. Inside ( ), the WHERE clause is assembled at line 632: is only set when and only when the caller opted into the favorites arm, which never does. With zero accessible projects, an empty filter string (which produces no filter condition in ) and no search string, all four children of the are invalid. go-xorm's condition builders silently drop invalid children, so the query becomes with no WHERE clause at all. The result is written back unconditionally: the function deletes the view's position rows and bulk-inserts one row per returned task per view. Because the filter creation path runs this for four default views, one request writes rows, every one of them referencing tasks the requesting user has no relationship with, including tasks in other users' private p
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- Go code.vikunja.io/api1.0.0-rc0 → 2.6.0
How to fix CVE-2026-111918
Recommended remediation
A patch or advisory reference is linked. Open the original publisher for availability by product version.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
Exploitation likelihood is not on this record for CVE-2026-111918. A missing EPSS score is not a low risk. Compare Vikunja: Saved filter creation with the linked advisory before you change production.
Which versions are affected?
Compare what you have installed with 1.0.0-rc0 → 2.6.0. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-863: Incorrect Authorization. EPSS is absent from the current FIRST dataset. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Oct 17, 2026 · NIST NVD
Detected
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
Oct 18, 2026 · GitHub Advisory Database
Fix available
code.vikunja.io/api fixed in 2.6.0
Oct 18, 2026 · GitHub Advisory Database
Updated
### Summary In Vikunja v2.6.0 the task position recalculation that runs when a saved filter view is created fails open when the requesting user has no accessible projects. Instead of aborting, the search that feeds the recalculation loses its project scope entirely and returns every task in the instance. The server then writes one row per task per view (four views per filter) into views owned by t
Sources
- CVE.orgVulnerability recordCVE-2026-111918
Official CVE identifier
cve.org - GitHub Advisory DatabasePackage advisoryGHSA-fprf-r6rv-xg99
GitHub Advisory Database record mirrored by OSV.
github.com - Go Vulnerability DatabasePackage advisoryGHSA-fprf-r6rv-xg99
Vikunja: Saved filter creation with an empty filter string recalculates task positions across all tenants
osv.dev - NIST NVDVulnerability recordCVE-2026-111918
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 repointi
nvd.nist.gov - OpenSSF OSV / OSV ScannerPackage advisoryGHSA-fprf-r6rv-xg99
Vikunja: Saved filter creation with an empty filter string recalculates task positions across all tenants
osv.dev
References
Freshness
Last verified in this catalog Oct 18, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.