Skip to main content

Suse CVE-2026-33313

MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-03-20 https://github.com/go-vikunja/vikunja GHSA-mr3j-p26x-72x4
4.3
CVSS 3.1 · GitHub Advisory
View

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Impact

This is a high-impact vulnerability with moderate to high real-world risk due to several converging factors. While a CVSS vector is not explicitly provided, the attack vector is network-based, requires authentication (reducing attack surface), has low complexity (simple ID enumeration), and grants confidentiality impact (comment disclosure). EPSS data is not available, but the vulnerability is trivial to exploit once discovered—an attacker needs only valid API credentials and the ability to guess or enumerate comment IDs. The existence of a patch and public advisory from the vendor indicates this was actively evaluated and remediated, supporting high severity. The vulnerability does not require special privileges beyond basic authentication, and exploitation is fully automatable via script. The technical impact is significant: confidentiality breach affecting potentially sensitive task management data across multiple projects and users. Organizations using unpatched Vikunja instances should prioritize patching, particularly if the instance contains sensitive project data or multi-tenant environments.

Exploit ScenarioDerived

An authenticated attacker with read access to their own task (Task A) enumerates comment IDs by inspecting any publicly visible comments or through sequential guessing. The attacker then requests GET /api/v1/tasks/A/comments/C where comment C belongs to a private task in another user's project. The authorization check validates that the attacker can read Task A (true), allowing the request to proceed. The backend then loads comment C by ID alone without re-verifying it belongs to Task A, returning the comment contents and metadata to the attacker. By repeating this process with different comment IDs, the attacker systematically exfiltrates sensitive task comments across the entire instance. The attack requires only network access and valid authentication credentials, making it a trivial exploitation pattern once discovered.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Mar 20, 2026

An authenticated user in Vikunja can read any task comment by its ID without proper authorization checks, regardless of whether they have access to the task that comment belongs to. The vulnerability exists in the GET /api/v1/tasks/{taskID}/comments/{commentID} endpoint, which validates access against the attacker-controlled task ID in the URL but then loads the comment by ID alone, bypassing task ownership verification. Any authenticated attacker with read access to at least one task can enumerate and retrieve comments from arbitrary tasks and private projects, leading to unauthorized information disclosure.

RemediationAI

Administrators should upgrade Vikunja to a version incorporating commit bc6d843ed4df82a6c89f10aa676a7a33d27bf2fd or later. The patch is available from the vendor repository at https://github.com/go-vikunja/vikunja/commit/bc6d843ed4df82a6c89f10aa676a7a33d27bf2fd. The fix corrects the authorization logic in TaskComment.CanRead() to verify that the requested comment actually belongs to the task being authorized, not just that the attacker has access to some task. Until patching is possible, apply defense-in-depth controls: restrict API access to trusted IP ranges or VPN, enforce HTTPS with strict TLS certificates, implement rate limiting on the comments endpoint to detect enumeration attempts, audit API access logs for patterns of comment ID enumeration across multiple tasks, and consider temporarily disabling the comments API endpoint if it is not critical to operations. Monitor the official Vikunja GitHub repository and security advisory channels for patch availability and release notes.

Affected Packages

go code.vikunja.io/api no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in go

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability affects the Vikunja API (pkg:go/code.vikunja.io_api), a task management and project planning application written in Go. The root cause is a broken access control pattern classified under CWE-639 (Authorization Bypass Through User-Controlled Key), where two separate authorization and data-loading steps are desynchronized. The TaskComment.CanRead() method in pkg/models/task_comment_permissions.go constructs a Task object using only the TaskID from the URL path and checks authorization against that task, but the subsequent getTaskCommentSimple() function in pkg/models/task_comments.go loads the comment by its own ID with XORM's implicit field filtering explicitly disabled via NoAutoCondition(). This design flaw allows an attacker to satisfy the authorization check for one task while retrieving comments from an entirely different task, effectively decoupling authorization logic from data retrieval.

Know when the next one hits your stack

  • 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

GitHub Advisory PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
SUSE MEDIUM

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch released
Mar 20, 2026 - 17:30 nvd
Patch available
CVE Published
Mar 20, 2026 - 17:25 nvd
MEDIUM 4.3

DescriptionGitHub Advisory

An authenticated user can read any task comment by ID, regardless of whether they have access to the task the comment belongs to, by substituting the task ID in the API URL with a task they do have access to.

Details

The GET /api/v1/tasks/{taskID}/comments/{commentID} endpoint performs an authorization check against the task ID provided in the URL path, then loads the comment by its own ID without verifying it belongs to that task.

Root Cause

In pkg/models/task_comment_permissions.go, CanRead constructs a Task using the TaskID from the URL and checks Task.CanRead:

go
func (tc *TaskComment) CanRead(s *xorm.Session, a web.Auth) (bool, int, error) {
    t := Task{ID: tc.TaskID}
    return t.CanRead(s, a)
}

In pkg/models/task_comments.go, getTaskCommentSimple loads the comment by ID only, with NoAutoCondition() explicitly disabling XORM's implicit struct-field filtering:

go
func getTaskCommentSimple(s *xorm.Session, tc *TaskComment) error {
    exists, err := s.
        Where("id = ?", tc.ID).
        NoAutoCondition().
        Get(tc)
    // ...
}

The generic web handler (pkg/web/handler/read_one.go) calls CanRead before ReadOne, so the permission check passes against the attacker-controlled task ID, and then ReadOne returns the comment from a completely different task.

Attack Scenario

  1. Attacker is authenticated and has read access to any task (task ID A) - e.g. their own task.
  2. Attacker guesses or enumerates a comment ID (C) belonging to a task in another user's private project.
  3. Attacker requests: GET /api/v1/tasks/A/comments/C
  4. Authorization passes because the attacker can read task A.
  5. The comment C is loaded by ID only and returned, leaking its contents and author.

Credit

This vulnerability was found using GitHub Security Lab Taskflows.

Executive ViewAI

Why It Matters

CVE-2026-33313 presents moderate security risk, a IDOR vulnerability rated CVSS 4.3. Exploitation could compromise the security of affected deployments. A patch is available and should be applied during regular vulnerability management.

Business Impact: Low
Compensating Controls

Apply vendor patch. If patching is delayed: restrict network access and enable monitoring.

Threat Intelligence Overview

EPSS Score
0.0%
Top 93% exploitable
Data Quality
4 sources
Confidence: Medium
NVD CVE.org EPSS Vendor GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Low

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Affected Products (CPE)GitHub Advisory

pkg:go/code.vikunja.io_api

Related Vulnerabilities in Vikunja Task Management Authorization Issues

View all 3

Vendor StatusVendor

SUSE

Severity: Medium
Product Status
openSUSE Leap 15.6 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP5 Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP6 Fixed
openSUSE Leap 15.5 Fixed

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