IPBUF安全漏洞报告
English
CVE-2026-33473 CVSS 5.7 中危

CVE-2026-33473: Vikunja TOTP重用漏洞

披露日期: 2026-03-24

漏洞信息

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

相关标签

认证绕过2FAVikunjaTOTP重放攻击

漏洞概述

Vikunja是一款流行的开源自托管任务管理平台。在其0.13版本至2.2.1版本之前的版本中,发现了一个关于双因素认证(2FA)的安全漏洞。该漏洞允许任何启用了2FA的用户,其基于时间的一次性密码(TOTP)在标准的30秒有效期内被多次重复使用。这意味着,如果攻击者截获了有效的TOTP验证码,便能在该时间窗口内多次通过身份验证,从而绕过2FA的安全保护机制,对用户账户构成严重威胁。

技术细节

该漏洞的根源在于Vikunja对双因素认证(2FA)中基于时间的一次性密码(TOTP)验证逻辑存在严重缺陷。在标准的TOTP实现中,服务端应当不仅验证代码的正确性和时效性(通常为30或60秒窗口),还应确保每个验证码只能被使用一次,以有效防御重放攻击。然而,在受影响的Vikunja版本中,服务端并未实施对已验证TOTP代码的标记或去重机制。具体而言,当攻击者通过社会工程学、网络嗅探或恶意软件窃取到受害者在某一时段生成的有效TOTP代码后,只要该代码未超过其30秒的生命周期,攻击者就可以反复提交该代码进行登录尝试。系统会误认为这是合法的验证请求并予以通过。这使得攻击者能够绕过2FA这一关键的安全防线,在未掌握动态生成密钥的情况下,长期保持对受害者账户的访问权限,极大地增加了数据泄露和账户劫持的风险。

攻击链分析

STEP 1
1. 信息窃取
攻击者通过钓鱼、恶意软件或网络监听等手段获取受害者的登录凭证(用户名、密码)以及当前时间窗口内有效的TOTP验证码。
STEP 2
2. 首次认证
攻击者使用窃取的凭证和TOTP验证码首次登录Vikunja平台,系统验证通过,建立会话。
STEP 3
3. 漏洞利用
在TOTP验证码的30秒有效期内,攻击者立即尝试使用相同的TOTP验证码再次登录(或在其他设备/浏览器上登录)。
STEP 4
4. 绕过验证
由于系统未校验TOTP是否已被使用,第二次验证请求成功通过,攻击者获得新的会话权限,成功控制账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # Conceptual Proof of Concept (PoC) for CVE-2026-33473 # This script demonstrates the reuse of a TOTP code within the validity window. TARGET_URL = "https://example.com/api/v1/login" USERNAME = "[email protected]" PASSWORD = "user_password" # Assume this TOTP code was intercepted or stolen STOLEN_TOTP = "123456" def login_with_totp(totp_code): session = requests.Session() payload = { "username": USERNAME, "password": PASSWORD, "totp_passcode": totp_code } response = session.post(TARGET_URL, json=payload) return response.status_code == 200 print("[*] Attempting first login with TOTP:", STOLEN_TOTP) if login_with_totp(STOLEN_TOTP): print("[+] Login 1 successful.") else: print("[-] Login 1 failed.") exit() print("[*] Attempting second login with SAME TOTP:", STOLEN_TOTP) if login_with_totp(STOLEN_TOTP): print("[+] Login 2 successful. TOTP code was reused!") print("[!] Vulnerability confirmed.") else: print("[-] Login 2 failed. System may be patched.")

影响范围

Vikunja >= 0.13, < 2.2.1

防御指南

临时缓解措施
建议管理员立即将Vikunja升级至2.2.1或更高版本以修复此漏洞。在升级之前,应加强对系统登录日志的实时监控,重点排查短时间内同一TOTP验证码被多次使用的异常情况,并提醒用户注意账户安全,警惕潜在的未授权访问。

参考链接

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