{"items":[{"id":"NVI-00011832","kind":"vulnerability","title":"Vikunja: Unbounded CSV row cardinality permits API process termination","revision":4,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected.","NVD lastModified does not establish freshness of every associated CPE record."],"lifecycle":"active","identifiers":["GHSA-pqf9-h8g4-8gmh","CVE-2026-91969"],"plain_summary":"GitHub lists this reviewed advisory for code.vikunja.io/api. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-065af399c0eb557e8dc0bfa17a5327c2"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-09-17T20:18:54.533Z","value":"6.5 MEDIUM (3.1)","meaning":"disclosure@vulncheck.com severity; no combined Null risk score.","source_id":"sr-60bb96b8b77206af274a2909ba98acb5"},{"kind":"CVSS","as_of":"2026-09-17T20:18:54.533Z","value":"7.1 HIGH (4.0)","meaning":"disclosure@vulncheck.com severity; no combined Null risk score.","source_id":"sr-60bb96b8b77206af274a2909ba98acb5"},{"kind":"EPSS","as_of":"2026-11-05T12:03:04.000Z","value":"0.378%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.31982. Missing scores are unknown.","source_id":"sr-065af399c0eb557e8dc0bfa17a5327c2"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-3e5c1b3cdf6085c35464a388d2f2f915","url":"https://github.com/advisories/GHSA-pqf9-h8g4-8gmh","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-pqf9-h8g4-8gmh","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"},{"id":"sr-60bb96b8b77206af274a2909ba98acb5","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-91969","basis":"official_catalog","notes":"This product uses data from the NVD API but is not endorsed or certified by the NVD.","title":"CVE-2026-91969","publisher":"NIST National Vulnerability Database","observed_at":"2026-11-04T09:59:38.530Z"},{"id":"sr-065af399c0eb557e8dc0bfa17a5327c2","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-91969","publisher":"FIRST EPSS","observed_at":"2026-11-06T07:17:46.404Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-3e5c1b3cdf6085c35464a388d2f2f915"],"technology":"code.vikunja.io/api","known_exclusions":[],"conditions_summary":"# Unbounded CSV row cardinality permits API process termination\n\n## Summary\n\nThe authenticated v2 CSV migration route caps upload bytes but not parsed row cardinality. It reads every record into a [][]string and then materializes a full task object for every row before insertion. Two million one-cell rows fit in a roughly 4 MB multipart request yet exhaust a 512 MiB API process.\n\n## Impact and affected scope\n\n- **Type:** Resource Exhaustion Csv Import\n- **Affected component:** POST /api/v2/migration/csv/migrate\n- **Preconditions:** An ordinary authenticated user supplies a multipart CSV containing a very large number of tiny records plus a valid mapping configuration.\n- **Verified revision:** `349cd5adbcc831ef08b08e6c9c6d627603c39606` on 28 August 2026\n- **Affected release range:** `= 2.5.0`; broader historical range not established and maintainer confirmation requested\n\nA low-privileged remote user can terminate the API process and deny service to all users with a request far below the configured upload-byte limit.\n\n## Technical details\n\ncsv.Reader.ReadAll retains every row, after which convertToVikunja allocates a task structure for each row; the existing upload-byte cap does not","public_affected_ranges":["= 2.5.0"]}],"null_published_at":"2026-11-07T07:07:46.834Z","source_updated_at":"2026-10-09T20:53:16.000Z","source_disclosed_at":"2026-10-09T20:53:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T23:14:22.124Z"},{"id":"NVI-00011832","kind":"vulnerability","title":"Vikunja: Unbounded CSV row cardinality permits API process termination","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-pqf9-h8g4-8gmh","CVE-2026-91969"],"plain_summary":"GitHub lists this reviewed advisory for code.vikunja.io/api. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-34b600483f723c92ac03a3846c69647c"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"EPSS","as_of":"2026-10-31T12:00:27.000Z","value":"0.378%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.31829. Missing scores are unknown.","source_id":"sr-34b600483f723c92ac03a3846c69647c"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-3e5c1b3cdf6085c35464a388d2f2f915","url":"https://github.com/advisories/GHSA-pqf9-h8g4-8gmh","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-pqf9-h8g4-8gmh","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"},{"id":"sr-34b600483f723c92ac03a3846c69647c","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-91969","publisher":"FIRST EPSS","observed_at":"2026-11-01T01:39:43.089Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-3e5c1b3cdf6085c35464a388d2f2f915"],"technology":"code.vikunja.io/api","known_exclusions":[],"conditions_summary":"# Unbounded CSV row cardinality permits API process termination\n\n## Summary\n\nThe authenticated v2 CSV migration route caps upload bytes but not parsed row cardinality. It reads every record into a [][]string and then materializes a full task object for every row before insertion. Two million one-cell rows fit in a roughly 4 MB multipart request yet exhaust a 512 MiB API process.\n\n## Impact and affected scope\n\n- **Type:** Resource Exhaustion Csv Import\n- **Affected component:** POST /api/v2/migration/csv/migrate\n- **Preconditions:** An ordinary authenticated user supplies a multipart CSV containing a very large number of tiny records plus a valid mapping configuration.\n- **Verified revision:** `349cd5adbcc831ef08b08e6c9c6d627603c39606` on 28 August 2026\n- **Affected release range:** `= 2.5.0`; broader historical range not established and maintainer confirmation requested\n\nA low-privileged remote user can terminate the API process and deny service to all users with a request far below the configured upload-byte limit.\n\n## Technical details\n\ncsv.Reader.ReadAll retains every row, after which convertToVikunja allocates a task structure for each row; the existing upload-byte cap does not","public_affected_ranges":["= 2.5.0"]}],"null_published_at":"2026-11-01T14:34:14.119Z","source_updated_at":"2026-10-09T20:53:16.000Z","source_disclosed_at":"2026-10-09T20:53:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T23:14:22.124Z"},{"id":"NVI-00011832","kind":"vulnerability","title":"Vikunja: Unbounded CSV row cardinality permits API process termination","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-pqf9-h8g4-8gmh","CVE-2026-91969"],"plain_summary":"GitHub lists this reviewed advisory for code.vikunja.io/api. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-3e5c1b3cdf6085c35464a388d2f2f915"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-3e5c1b3cdf6085c35464a388d2f2f915","url":"https://github.com/advisories/GHSA-pqf9-h8g4-8gmh","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-pqf9-h8g4-8gmh","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-3e5c1b3cdf6085c35464a388d2f2f915"],"technology":"code.vikunja.io/api","known_exclusions":[],"conditions_summary":"# Unbounded CSV row cardinality permits API process termination\n\n## Summary\n\nThe authenticated v2 CSV migration route caps upload bytes but not parsed row cardinality. It reads every record into a [][]string and then materializes a full task object for every row before insertion. Two million one-cell rows fit in a roughly 4 MB multipart request yet exhaust a 512 MiB API process.\n\n## Impact and affected scope\n\n- **Type:** Resource Exhaustion Csv Import\n- **Affected component:** POST /api/v2/migration/csv/migrate\n- **Preconditions:** An ordinary authenticated user supplies a multipart CSV containing a very large number of tiny records plus a valid mapping configuration.\n- **Verified revision:** `349cd5adbcc831ef08b08e6c9c6d627603c39606` on 28 August 2026\n- **Affected release range:** `= 2.5.0`; broader historical range not established and maintainer confirmation requested\n\nA low-privileged remote user can terminate the API process and deny service to all users with a request far below the configured upload-byte limit.\n\n## Technical details\n\ncsv.Reader.ReadAll retains every row, after which convertToVikunja allocates a task structure for each row; the existing upload-byte cap does not","public_affected_ranges":["= 2.5.0"]}],"null_published_at":"2026-11-01T01:03:56.608Z","source_updated_at":"2026-10-09T20:53:16.000Z","source_disclosed_at":"2026-10-09T20:53:14.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T23:14:22.124Z"}],"next_cursor":null,"snapshot_revision":"42594"}