Skip to content
Heist/ feed
Back to feed
High

Vikunja Affected by Privilege Escalation via Project Reparenting

Type: advisorySources: OSV

Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, the CanUpdate check at pkg/models/project_permissions.go:139-148 only requires CanWrite on the new parent project when changing parent_project_id. However, Vikunja's permission model uses a recursive CTE that walks up the project hierarchy to compute permissions. Moving a project under a different parent changes the permission inheritance chain. When a user has inherited Write access (from a parent project share) and reparents the child project under their own project tree, the CTE resolves their ownership of the new parent as Admin (permission level 2) on the moved project. This vulnerability is fixed in 2.3.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-35595
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 08:59 UTC · Revision 1

Source evidence

Vikunja Affected by Privilege Escalation via Project Reparenting

core-osv · Original source

Published 10 Apr 2026, 15:58 UTC

Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, the CanUpdate check at pkg/models/project_permissions.go:139-148 only requires CanWrite on the new parent project when changing parent_project_id. However, Vikunja's permission model uses a recursive CTE that walks up the project hierarchy to compute permissions. Moving a project under a different parent changes the permission inheritance chain. When a user has inherited Write access (from a parent project share) and reparents the child project under their own project tree, the CTE resolves their ownership of the new parent as Admin (permission level 2) on the moved project. This vulnerability is fixed in 2.3.0.

osv:CVE-2026-35595
Complete source record
{
  "id": "0625ebac218eca62738907ab63820d89f4c55275994a762d1877c9499b9a0896",
  "url": "https://osv.dev/vulnerability/CVE-2026-35595",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Vikunja Affected by Privilege Escalation via Project Reparenting",
    "summary": "Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, the CanUpdate check at pkg/models/project_permissions.go:139-148 only requires CanWrite on the new parent project when changing parent_project_id. However, Vikunja's permission model uses a recursive CTE that walks up the project hierarchy to compute permissions. Moving a project under a different parent changes the permission inheritance chain. When a user has inherited Write access (from a parent project share) and reparents the child project under their own project tree, the CTE resolves their ownership of the new parent as Admin (permission level 2) on the moved project. This vulnerability is fixed in 2.3.0.",
    "evidence": "osv:CVE-2026-35595",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-35595",
      "aliases": [
        "CVE-2026-35595",
        "GHSA-2vq4-854f-5c72",
        "GO-2026-4952"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/go-vikunja/vikunja",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "28b537837f9808dc106c9058b5829c65759fddf2"
                },
                {
                  "fixed": "c03d682f48aff890eeb3c8b41d38226069722827"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:vikunja:vikunja:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.3.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "c03d682f48aff890eeb3c8b41d38226069722827"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "28b537837f9808dc106c9058b5829c65759fddf2"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.3.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2.2.2",
            "v2.2.1",
            "v2.2.0",
            "v2.1.0",
            "v2.0.0",
            "v1.1.0",
            "v1.0.0",
            "v1.0.0-rc4",
            "v1.0.0-rc3",
            "v1.0.0-rc2",
            "v1.0.0-rc1",
            "v1.0.0-rc0",
            "v0.24.1",
            "v0.23.0",
            "v0.22.1",
            "v0.22.0",
            "v0.21.0",
            "v0.20.4",
            "v0.20.3",
            "v0.20.1",
            "v0.20.0",
            "v0.19.2",
            "v0.19.1",
            "v0.19.0",
            "v0.18.1",
            "v0.18.0",
            "v0.17.0",
            "v0.16.0",
            "v0.15.0",
            "v0.14.0",
            "v0.13",
            "v0.12",
            "v0.11",
            "v0.10",
            "v0.9",
            "v0.8",
            "v0.7",
            "v0.6",
            "v0.5",
            "v0.4",
            "v0.3",
            "v0.2",
            "v0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-35595.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:46.847342212Z",
      "provider": "osv",
      "references": [
        "https://github.com/go-vikunja/vikunja/releases/tag/v2.3.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/35xxx/CVE-2026-35595.json",
        "https://github.com/go-vikunja/vikunja/security/advisories/GHSA-2vq4-854f-5c72",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-35595",
        "https://github.com/go-vikunja/vikunja/commit/c03d682f48aff890eeb3c8b41d38226069722827",
        "https://github.com/go-vikunja/vikunja/pull/2583"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-269"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/35xxx/CVE-2026-35595.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-35595",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 515031,
  "published_at": "2026-04-10T15:58:32.658+00:00"
}