Skip to main content

Vikunja EUVDEUVD-2026-78644

| CVE-2026-91968 HIGH
Uncontrolled Recursion (CWE-674)
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain or register authenticated Vikunja account
  2. Delivery
    Send crafted filter query with thousands of nested parentheses
  3. Exploit
    Recursive parser consumes unbounded memory
  4. Execution
    API process hits memory limit and terminates
  5. Impact
    Repeat 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 filter query parameter to the task-filter endpoint carrying thousands of nested parentheses. No administrative role, no special feature toggle, and no non-default configuration are needed: the recursive filter parser is part of the default task-listing functionality, so any instance where untrusted or broadly provisioned accounts exist is exposed. What limits exploitation is that the impact is availability-only - no data is read, modified, or stolen - the attacker must already hold credentials (or be able to self-register, if registration is open), the crash terminates the API process rather than the database, and the success of the attack therefore depends on how quickly the deployment restarts or supervises that process. Instances with closed registration, tightly controlled user provisioning, or low user counts face materially lower realistic risk than open, multi-tenant or internet-facing deployments.

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 filter parameter consisting of several thousand opening parentheses. The parser recurses once per parenthesis, memory consumption spikes until the Go runtime kills the API process, and the attacker simply repeats the request in a loop to keep the instance unavailable to all users with minimal effort and no specialized tooling.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv2 – 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)
v1 Sep 15, 2026 - 16:08 CVSS 6.5

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

vikunja 2.5.0 <2.6.0

Affected Packages

go code.vikunja.io/api fix: 2.6.0
euvd vikunja fix: 2.6.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 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

Vendor (VulnCheck) PRIMARY 7.1 MEDIUM
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
vuln.today AI 6.5 MEDIUM

Network-reachable API but exploitation needs a valid authenticated account and a crafted filter, so PR:L; only availability is impacted.

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

Lifecycle Timeline

4
Analysis Updated
Sep 15, 2026 - 16:29 vuln.today
v2 - CVSS changed
Severity Changed
Sep 15, 2026 - 16:22 NVD
MEDIUM HIGH
CVSS changed
Sep 15, 2026 - 16:22 NVD
6.5 (MEDIUM) 7.1 (HIGH)
Patch available
Sep 15, 2026 - 16:03 EUVD

DescriptionCVE.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

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche self-hosted task manager, limited to self-hosting community
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.4%
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· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

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

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-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-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-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-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-34727 CRITICAL
9.1 Apr 10

Vikunja's OIDC callback handler issues a full JWT to any successfully matched user without checking whether that account

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,

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