Skip to main content

Vikunja CVE-2026-91969

| EUVDEUVD-2026-78645 HIGH
Uncontrolled Resource Consumption (CWE-400)
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 low-privileged Vikunja account
  2. Delivery
    Authenticate to /api/v2 API
  3. Exploit
    POST giant multipart CSV to /migration/csv/migrate
  4. Execution
    Parser allocates per-row objects unbounded
  5. Persist
    Process heap exhausted, OOM kill
  6. Impact
    API service terminates, all users denied

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three concrete things: (1) an authenticated Vikunja account, since the CVSS vector specifies PR:L and the endpoint is behind the API's authentication layer - instances with closed registration are exposed only to existing users; (2) the CSV migration feature/endpoint POST /api/v2/migration/csv/migrate must be reachable by that account, meaning any deployment where ordinary users can invoke migration imports, and no proxy rule blocks the path; and (3) the ability to POST a multipart CSV body large enough in row count to exhaust process memory, which implies proxy, WAF, and body-size limits must not truncate the upload before the parser runs. Limiting factors: the attacker cannot read or alter other tenants' data (VC:N/VI:N), impact is transient availability loss only, and instances that sandbox the API in a memory-capped container with automatic restart recover quickly rather than suffering host-level failure. Instances that restrict the migration endpoint to administrators, or that cap upload size at a very low threshold, are not practically exploitable by low-privileged users.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H, score 7.1) describes a low-complexity, network-reachable attack that requires only a low-privileged authenticated account and no user interaction, with impact confined to availability - confidentiality and integrity are explicitly unchanged. That combination makes the issue trivially automatable against any instance that permits self-registration or has a low-trust user base, since an attacker can register or reuse a basic account and fire a single large upload. Confidence in the CVSS-derived judgment is high because the vector is self-consistent with the description (memory exhaustion, no data disclosure). What is NOT confirmed: there is no KEV entry, no POC or exploit-code indicator in the supplied data, and no EPSS score was provided, so widespread opportunistic scanning cannot be asserted - the practical risk is likely to come from insider or low-privileged-tenant abuse rather than mass internet exploitation. The wildcard CPE also means asset inventories relying on CPE alone may over-match versions; use the 2.5.0 < 2.6.0 range from EUVD for scoping. Multi-tenancy amplifies impact: one malicious user's upload can deny service to every other user on the same instance.

Exploit ScenarioDerived

An attacker with any valid low-privileged Vikunja account - obtained via open registration or a compromised/shared tenant account - sends a single multipart POST to /api/v2/migration/csv/migrate containing a CSV built from millions of minimal one-field rows. The parser accumulates parsed record objects in memory without a cardinality cap until the Go process exhausts available heap and is killed or panics, taking the API offline for every user on the instance. The attack is trivial to automate and repeat, and no user interaction or high privilege is needed.

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

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

Alert me

AnalysisAIv2 – Sep 15, 2026

Vikunja releases before 2.6.0 can be knocked offline by any authenticated user who uploads a deliberately oversized multipart CSV file to the POST /api/v2/migration/csv/migrate endpoint, because the importer parses rows without bounding cardinality. Each tiny record consumes heap, so a file containing millions of minimal rows drives the process to out-of-memory conditions and terminates the API service, causing a full denial of service for all tenants on that instance. The flaw is rated 7.1 (CVSS 4.0) with high availability impact and low privileges required; exploitability is high and automatable, though no public exploit code and no CISA KEV listing were provided at time of analysis. Notes in the source metadata separately cite a vendor-available patch.

Earlier versions of this analysis (1)
v1 Sep 15, 2026 - 16:07 CVSS 6.5

Vikunja versions before 2.6.0 expose a resource-exhaustion flaw in the POST /api/v2/migration/csv/migrate endpoint, which parses uploaded multipart CSV files without bounding row cardinality. An authenticated attacker (CVSS PR:L) can submit a CSV containing millions of tiny rows, driving the Go process to consume unbounded memory until the API service is terminated - a full loss of availability (C:N/I:N/A:H, base score 6.5). No public exploit code has been identified and the issue is not listed in CISA KEV, so this is currently a denial-of-service risk requiring an authenticated account rather than an actively exploited zero-day.

RemediationAI

The primary fix is to upgrade Vikunja to 2.6.0 or later, which the source metadata states is available from the vendor; the GHSA-pqf9-h8g4-8gmh advisory should be consulted for the authoritative patched release. If immediate upgrade is not possible, several compensating controls are viable, each with trade-offs. First, restrict or block the path /api/v2/migration/csv/migrate at the reverse proxy for all users except a small administrator allowlist - this fully removes the attack surface but disables the CSV import feature for legitimate users. Second, cap the upload size at the proxy or ingress layer (for example nginx client_max_body_size and equivalent limits) and apply request-body timeouts; this bounds the blast radius but the finding indicates millions of very small records can still be a problem, so a body-size cap must be paired with a row-count-friendly limit or a very small cap that may break legitimate large imports. Third, apply per-user rate limiting and concurrency limits on the migration endpoint so a single account cannot pipeline repeated uploads - trade-off is throttling of legitimate bulk migrations. Fourth, run the API under a container or systemd unit with a hard memory cgroup limit plus restart-on-OOM so a successful exhaustion restarts quickly instead of taking the host down; this is a resilience measure, not a fix, and introduces brief availability gaps. Finally, tighten registration and account provisioning so untrusted parties cannot obtain the low-privileged account this attack requires. Reference material: https://github.com/go-vikunja/vikunja/security/advisories/GHSA-pqf9-h8g4-8gmh and https://www.vulncheck.com/advisories/vikunja-before-2.6.0-resource-exhaustion-via-csv-migration.

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 server exposing a REST API under /api/v2/. The CSV migration feature (POST /api/v2/migration/csv/migrate) accepts multipart/form-data uploads and parses the supplied CSV into task records for bulk import. The root cause is CWE-400, Uncontrolled Resource Consumption: the parser does not enforce an upper bound on parsed row cardinality, row count, or accumulated in-memory object size, so memory growth is proportional to attacker-supplied record count rather than to any configured quota. The affected CPE cpe:2.3:a:go-vikunja:vikunja:*:*:*:*:*:*:*:* is version-agnostic in the feed; EUVD scopes the vulnerable range to vikunja 2.5.0 through versions prior to 2.6.0. Go's runtime will typically panic or be OOM-killed by the kernel when heap limits are reached, which manifests as an abrupt API service termination rather than a graceful error.

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 endpoint with low skill and no interaction, but an authenticated PR:L account is mandatory; availability-only impact.

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 POST /api/v2/migration/csv/migrate endpoint that fails to limit parsed row cardinality. Authenticated attackers can upload multipart CSV files with millions of tiny records to exhaust process memory and terminate the API service.

Technical POC Analysis

Note on identifiers: the supplied GHSA-pqf9-h8g4-8gmh advisory text records "No known CVE" and "No CWEs".

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.3%
Top 73% exploitable
Prevalence
Low
self-hosted niche open-source task manager, limited enterprise footprint
Threat Intel
1
1 source
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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
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· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

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