Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privileged Vikunja account
-
DeliveryAuthenticate to /api/v2 API
-
ExploitPOST giant multipart CSV to /migration/csv/migrate
-
ExecutionParser allocates per-row objects unbounded
-
PersistProcess heap exhausted, OOM kill
-
ImpactAPI 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – 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)
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
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 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
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 endpoint with low skill and no interaction, but an authenticated PR:L account is mandatory; availability-only impact.
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 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
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-78645
GHSA-55p4-8j34-jv53
NVD
CVE.org
EPSS
Exploit-DB