Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain or register authenticated Vikunja account
-
DeliverySend crafted filter query with thousands of nested parentheses
-
ExploitRecursive parser consumes unbounded memory
-
ExecutionAPI process hits memory limit and terminates
-
ImpactRepeat request loop to sustain outage
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires a valid authenticated Vikunja account or API token (PR:L in the CVSS vector) - anonymous users cannot reach the vulnerable code path - plus network reachability to the REST API, and the attacker must be able to supply a |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VA:H/SC:N/SI:N/SA:N, base 7.1) is internally consistent with the description: remote, low-complexity, no user interaction, and requiring only a low-privileged authenticated account, with availability impact confined to the vulnerable system and no confidentiality or integrity effect. Translated to CVSS 3.1 this corresponds to roughly 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H), so the practical risk is availability-only rather than a data-breach scenario. EPSS data was not supplied in this feed, so the exploitation probability cannot be quantified and should not be assumed high or low; likewise, absence from CISA KEV and the lack of any referenced public exploit code mean this is currently a confirmed-but-not-observed-in-the-wild DoS condition, and remediation should be prioritised by exposure rather than by panic. The mitigating factor is the PR:L requirement - an anonymous internet user cannot trigger it, only someone who can already authenticate - while the aggravating factor is that a single scripted loop of nested-parenthesis requests can be repeated indefinitely, so even a mid-sized municipal IT team in leszno running a shared Vikunja instance should treat this as urgent, because one compromised or malicious user account can deny service to every other tenant. Overall this is a genuine but moderate-priority availability issue: real, easy to reproduce, cheap to mitigate by upgrading, but not a candidate for emergency out-of-band response unless the instance is internet-facing with open registration. |
| Exploit ScenarioDerived | An attacker holding any ordinary Vikunja account - obtained legitimately, via open registration, or by compromising a low-value user - sends a single HTTP GET to the task-filter endpoint with a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Sep 15, 2026
Memory exhaustion in the Vikunja task-filter endpoint lets any authenticated user crash the API service by submitting a filter query containing thousands of nested parentheses, which the recursive expression parser consumes without a depth limit. All deployments before version 2.6.0 are affected (EUVD lists 2.5.0 through 2.5.x), and a single low-privileged account is enough to repeatedly take the backend offline. A vendor advisory and a VulnCheck advisory are published, a patched release exists in 2.6.0, and no public exploit code or CISA KEV entry was identified at time of analysis, though the attack is trivial to reproduce by hand with plain HTTP requests.
Earlier versions of this analysis (1)
Vikunja instances running versions before 2.6.0 can be knocked offline by an authenticated user who submits a task filter query containing thousands of nested parentheses, driving the recursive filter parser into unbounded memory consumption (CWE-674, uncontrolled recursion) until the API process is terminated. The flaw is network-reachable, requires only a low-privileged account, and yields a full denial of service on the affected service (CVSS 6.5, AV:N/PR:L/A:H). No public exploit code or CISA KEV listing was identified at time of analysis, and a vendor fix is available in version 2.6.0.
RemediationAI
Vendor-released patch: upgrade Vikunja to 2.6.0 or later, which introduces the recursion-depth handling for the filter parser and is the only complete fix; the fix is announced in the GitHub security advisory at https://github.com/go-vikunja/vikunja/security/advisories/GHSA-xxc3-xpmc-vmvr. If an upgrade cannot be staged immediately, the practical compensating controls are: place the API behind a reverse proxy or WAF rule that rejects or caps requests whose filter query parameter exceeds a sane length or nesting depth (simple to implement, but can produce false positives for legitimate complex filters and does not fix the parser); enforce strict account provisioning so untrusted users cannot obtain authenticated accounts, since PR:L means the exploit requires a valid session (effective against anonymous abuse, ineffective against a malicious or compromised tenant); add process-level memory limits and automatic restart supervision for the Vikunja API so a crash degrades to a brief outage rather than a host-level OOM event (a resilience bandage, not a fix, and users see errors during restarts); and rate-limit or temporarily disable the task-filter endpoint for low-trust users (immediate relief, but it removes a legitimate feature). None of these substitutes for upgrading to 2.6.0.
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 and project management application exposing a REST API whose task-listing endpoints accept a filter query parameter. That filter is parsed by a recursive-descent style expression parser, and CWE-674 (Uncontrolled Recursion) describes exactly the flaw here: the parser recurses once per opening parenthesis without any maximum-depth guard or nesting budget. Deeply nested input consequently produces a stack of recursive calls proportional to input length, driving unbounded memory allocation (and potentially stack growth) until the Go runtime terminates the API process with an out-of-memory condition. The affected component is the whole product per the wildcard CPE cpe:2.3:a:go-vikunja:vikunja:*:*:*:*:*:*:*:* - i.e. every release below 2.6.0, with EUVD pinning the confirmed range to 2.5.0 < 2.6.0 - and the root cause is the absence of an input-complexity limit rather than any memory-safety bug, so exploitation does not require memory corruption primitives.
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:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable API but exploitation needs a valid authenticated account and a crafted filter, so PR:L; only availability is impacted.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
4DescriptionCVE.org
vikunja versions before 2.6.0 contain a resource exhaustion vulnerability in the task-filter endpoint that accepts deeply nested filter expressions without recursion depth limits. Authenticated attackers can supply thousands of nested parentheses in the filter query parameter to exhaust memory and terminate the API process.
Technical POC Analysis
Note on identifiers: the tasking asserts CVE-2026-91968, CWE-674, and an affected range "< 2.6.0 (2.5.0 through 2.5.x)".
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 PoC candidate from github (unverified)
Sign in to open the public PoC links collected for this CVE.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Cross-tenant information disclosure in the self-hosted task manager Vikunja (0.24.0 through 2.3.0) lets a holder of any
Weak password policy in Vikunja task management before 2.0.0 allows users to set trivially guessable passwords. PoC avai
Principal type confusion in Vikunja (versions 0.22.0-2.3.0) allows an authenticated low-privilege attacker to fully cont
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
Instance-wide data breach in Vikunja before 2.2.1 lets remote attackers exfiltrate and destroy every file attachment acr
Vikunja's OIDC callback handler issues a full JWT to any successfully matched user without checking whether that account
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,
EUVD-2026-78644
GHSA-jfw3-2gcf-23r5
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB