CVE-2024-30373
Executive Summary
CVE-2024-30373 is a critical remote code execution vulnerability in Kofax Power PDF, specifically within the parsing of JPF files. The flaw is an out-of-bounds write (CWE-787) that occurs when the application fails to properly validate user-supplied data, allowing an attacker to write past the end of an allocated object. Exploitation requires user interaction—the victim must open a malicious JPF file or visit a malicious page. With a CVSS score of 7.8 (High), this vulnerability poses a significant risk to enterprise environments using Kofax Power PDF for document processing. No public proof-of-concept (PoC) or exploit code has been released, and no patch is currently available from the vendor.
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 is not related to NPM, PyPI, Go, or Ruby ecosystems. It affects a proprietary desktop application (Kofax Power PDF) and is not part of any open-source package registry.
CVSS Breakdown & Threat Level
- CVSS Score: 7.8 (High)
- Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Attack Vector: Local (requires opening a malicious file)
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required (victim must open the file)
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
The high impact across all three security pillars, combined with low attack complexity, makes this a severe threat despite the need for user interaction.
Deep Dive & Mechanics
The vulnerability resides in the JPF file parsing module of Kofax Power PDF. JPF (Java Print File) is a format used for printing and document exchange. The specific flaw is an out-of-bounds write: when parsing a specially crafted JPF file, the application does not validate the size of user-supplied data before writing it to a heap buffer. This allows an attacker to overwrite adjacent memory, potentially corrupting critical data structures or function pointers.
Technical Details:
- Root Cause: Lack of bounds checking on a buffer write operation during JPF parsing.
- Trigger: Opening a malicious JPF file (e.g., via email attachment or web download).
- Impact: Arbitrary code execution in the context of the current user process.
- Exploitability: The vulnerability is exploitable without additional privileges, but requires the victim to interact with the file.
The vulnerability was reported through the Zero Day Initiative (ZDI-CAN-22092), indicating it was responsibly disclosed but remains unpatched.
Vulnerable vs. Patched Code
Since no patch is available, a direct code comparison is not possible. However, based on the CWE-787 description, the vulnerable code likely resembles:
// Vulnerable pseudo-code
void parse_jpf_data(char *input, size_t input_len) {
char buffer[256];
// No bounds check
memcpy(buffer, input, input_len); // Out-of-bounds write if input_len > 256
}
A patched version would include a bounds check:
// Patched pseudo-code
void parse_jpf_data(char *input, size_t input_len) {
char buffer[256];
if (input_len > sizeof(buffer)) {
// Handle error
return;
}
memcpy(buffer, input, input_len);
}
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Kofax Power PDF installed (any version)
- A malicious JPF file crafted to trigger the out-of-bounds write
Exploitation Steps:
- Craft the Malicious JPF File: Use a fuzzer or manual binary editing to create a JPF file with a large data field that exceeds the expected buffer size.
- Deliver the File: Send the file via email, a download link, or a compromised website.
- Trigger the Vulnerability: The victim opens the file in Kofax Power PDF, causing the out-of-bounds write.
- Achieve Code Execution: Overwrite a function pointer or return address to redirect execution to attacker-controlled shellcode.
Example (Conceptual):
# Python script to generate a malicious JPF file (conceptual)
import struct
# JPF header
header = b'\x25\x50\x44\x46' # %PDF
# Crafted data to overflow buffer
payload = b'A' * 256 + struct.pack('<I', 0xdeadbeef) # Overwrite with controlled data
with open('malicious.jpf', 'wb') as f:
f.write(header + payload)
Note: No public exploit code exists; this is a conceptual example.
Blue Team (Defensive)
Detection:
- Monitor for unusual JPF file activity, especially files with abnormally large sizes or unexpected structures.
- Use endpoint detection and response (EDR) tools to detect heap corruption or out-of-bounds write attempts.
Prevention:
- Restrict execution of Kofax Power PDF in sandboxed environments.
- Implement application whitelisting to prevent untrusted JPF files from being opened.
- Use email filtering to block JPF attachments from unknown senders.
Hunting:
- Search for processes (e.g.,
PowerPDF.exe) crashing with access violation errors related to heap operations. - Look for suspicious child processes spawned by Kofax Power PDF.
Indicators of Compromise (IOCs)
- File Hashes: No known malicious samples; monitor for JPF files with unusual sizes (>1MB) or non-standard headers.
- Network Indicators: Outbound connections from
PowerPDF.exeto unknown IPs (post-exploitation C2). - Process Indicators:
PowerPDF.exespawningcmd.exe,powershell.exe, or other shell processes. - Registry/File System: Unusual DLLs loaded by
PowerPDF.exe(e.g., from%TEMP%).
Detection Engineering
YARA Rule
rule CVE_2024_30373_Kofax_JPF_Exploit {
meta:
description = "Detects malicious JPF files exploiting CVE-2024-30373"
author = "Valters IT"
date = "2025-04-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-30373"
strings:
$jpf_header = { 25 50 44 46 } // %PDF
$large_data = /.{512,}/ // Data block >512 bytes
condition:
$jpf_header at 0 and #large_data > 0
}
Sigma Rule
title: CVE-2024-30373 Kofax Power PDF JPF Exploitation
id: 8a9b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects potential exploitation of CVE-2024-30373 via process anomalies
author: Valters IT
date: 2025-04-01
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith: '\PowerPDF.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
condition: selection
falsepositives:
- Legitimate use of command line tools by PowerPDF (rare)
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"CVE-2024-30373 Kofax Power PDF JPF Outbound C2"; flow:to_server,established; content:"|25 50 44 46|"; depth:4; content:"|00|"; within:100; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate Affected Systems: Disconnect any systems running Kofax Power PDF from the network if suspicious activity is detected.
- Block JPF Files: Use email and web gateways to block JPF attachments and downloads.
- User Awareness: Train users not to open JPF files from untrusted sources.
Long-Term Fixes:
- Vendor Patch: Await an official patch from Kofax. Monitor their security advisories.
- Alternative Software: Consider using a different PDF reader that is actively maintained and patched.
- Application Hardening: Run Kofax Power PDF in a sandbox or with reduced privileges (e.g., using AppLocker or Windows Defender Application Guard).
Workarounds:
- Disable JPF file association in Windows so that JPF files are not automatically opened with PowerPDF.
- Use file reputation services to scan JPF files before opening.
Valters IT
Securing Digital Frontiers
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.