CVE-2026-33312 Overview
CVE-2026-33312 is a Broken Access Control vulnerability affecting Vikunja, an open-source self-hosted task management platform. The vulnerability exists in the DELETE /api/v1/projects/:project/background endpoint, which incorrectly checks for CanRead permission instead of the required CanUpdate permission. This misconfiguration allows any user with read-only access to a project to permanently delete its background image, resulting in unauthorized data modification.
Critical Impact
Users with read-only access can permanently delete project background images, violating the principle of least privilege and potentially disrupting project workflows across affected Vikunja instances.
Affected Products
- Vikunja versions 0.20.2 through 2.1.x
- All Vikunja deployments using the affected REST API endpoint
- Self-hosted Vikunja instances with multi-user project access
Discovery Timeline
- 2026-03-20 - CVE-2026-33312 published to NVD
- 2026-03-24 - Last updated in NVD database
Technical Details for CVE-2026-33312
Vulnerability Analysis
This vulnerability is classified under CWE-863 (Incorrect Authorization), which occurs when software performs an authorization check but does not correctly verify the user's privileges for the requested action. In Vikunja's case, the API endpoint responsible for deleting project backgrounds validates only whether the user can read the project rather than whether they have permission to update or modify it.
The flaw allows horizontal privilege abuse where users who should only have viewing capabilities can perform destructive actions on shared projects. This represents a violation of the separation between read and write operations that is fundamental to access control systems.
Root Cause
The root cause is an incorrect permission check in the project background deletion endpoint. The code path evaluates CanRead authorization when it should evaluate CanUpdate authorization. This logic error means that the authorization boundary between read-only and read-write users is not properly enforced for this specific operation.
Attack Vector
The attack is network-based and requires low complexity to execute. An authenticated attacker with only read-only access to a project can exploit this vulnerability by sending a crafted DELETE request to the /api/v1/projects/:project/background endpoint. Upon successful exploitation, the project's background image is permanently deleted.
The attack requires:
- Valid authentication to the Vikunja instance
- Read-only access to at least one project with a background image
- Knowledge of the project ID (easily obtainable through normal read access)
The vulnerability mechanism involves the authorization middleware passing through the request when it confirms read permissions, without checking the more restrictive update permissions required for destructive operations. For detailed technical information, refer to the GitHub Security Advisory.
Detection Methods for CVE-2026-33312
Indicators of Compromise
- Unexpected deletion of project background images, especially in projects where the configured users should only have read access
- API access logs showing DELETE requests to /api/v1/projects/:project/background from users with read-only permissions
- User complaints about missing background images without corresponding admin actions
Detection Strategies
- Review API access logs for DELETE requests to the project background endpoint from users without write permissions
- Implement alerting on successful DELETE operations to the background endpoint combined with permission auditing
- Monitor for patterns of unauthorized resource modification across multiple projects
Monitoring Recommendations
- Enable detailed API request logging for all project modification endpoints
- Implement role-based access audit trails that capture permission levels at the time of each request
- Set up automated alerts for any destructive API operations performed by users with limited permissions
How to Mitigate CVE-2026-33312
Immediate Actions Required
- Upgrade Vikunja to version 2.2.0 or later immediately
- Audit project background images for unauthorized deletions before upgrading
- Review access logs to identify any potential exploitation that may have already occurred
- Consider temporarily restricting API access to sensitive endpoints until the patch is applied
Patch Information
Vikunja version 2.2.0 contains the fix for this vulnerability. The patch corrects the permission check from CanRead to CanUpdate for the project background deletion endpoint. For more information about the fix, see the Vikunja v2.2.0 Release Announcement and the GitHub Security Advisory.
Workarounds
- If immediate upgrade is not possible, consider implementing a reverse proxy rule to block DELETE requests to /api/v1/projects/*/background
- Temporarily revoke read-only access for untrusted users until the patch can be applied
- Backup project configurations including background images to enable recovery if exploitation occurs
# Example nginx rule to block the vulnerable endpoint until patching
location ~ ^/api/v1/projects/[^/]+/background$ {
if ($request_method = DELETE) {
return 403;
}
proxy_pass http://vikunja_backend;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


