CVE-2024-5510
Executive Summary
CVE-2024-5510 is a high-severity (CVSS 7.8) remote code execution vulnerability in Kofax Power PDF, specifically within the parsing of JP2 (JPEG 2000) files. The flaw is an out-of-bounds read that occurs due to insufficient validation of user-supplied data, allowing an attacker to read past the end of an allocated object. Exploitation requires user interaction—the victim must open a malicious JP2 file or visit a malicious page. If successfully exploited, an attacker can execute arbitrary code in the context of the current process. No public proof-of-concept (PoC) or patch is currently available, and the EPSS score is 0.0%, indicating low exploitation activity in the wild.
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
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 (AV): Local – The attacker must deliver a malicious file to the target system.
- Attack Complexity (AC): Low – No special conditions required beyond user opening the file.
- Privileges Required (PR): None – No authentication needed.
- User Interaction (UI): Required – The victim must open the malicious file.
- Scope (S): Unchanged – The vulnerability does not affect other components.
- Confidentiality (C): High – Potential for full data disclosure.
- Integrity (I): High – Potential for code execution.
- Availability (A): High – Potential for process crash or code execution.
Threat Level: High. Although no active exploitation is reported, the lack of a patch and the potential for code execution make this a critical risk for organizations using Kofax Power PDF.
Deep Dive & Mechanics
The vulnerability resides in the JP2 file parsing module of Kofax Power PDF. JP2 files are based on the JPEG 2000 standard and contain a structured hierarchy of boxes (similar to atoms in MP4). The specific flaw is an out-of-bounds read (CWE-125) triggered when the parser processes a malformed JP2 file.
Root Cause: The parser fails to properly validate the length of a data segment before reading it. When a JP2 file contains a box with an artificially inflated or corrupted length field, the parser attempts to read beyond the allocated buffer, leading to an out-of-bounds read. This can be leveraged by an attacker to read sensitive memory contents or, more critically, to corrupt memory and achieve code execution.
Attack Flow:
- Attacker crafts a malicious JP2 file with a manipulated box length.
- Victim opens the file in Kofax Power PDF.
- The parser reads the corrupted length and performs an out-of-bounds read.
- The read operation may access attacker-controlled data or trigger a write-what-where condition, leading to arbitrary code execution.
Vulnerable vs. Patched Code
Since no patch is available, a direct code comparison is not possible. However, based on the vulnerability description, the vulnerable code likely resembles:
// Vulnerable pseudo-code
void parse_jp2_box(uint8_t *buffer, size_t buffer_size) {
uint32_t box_length = *(uint32_t*)buffer; // No validation
uint8_t *box_data = buffer + 8; // Skip header
// Out-of-bounds read if box_length > buffer_size
process_box_data(box_data, box_length);
}
A patched version would include bounds checking:
// Patched pseudo-code
void parse_jp2_box(uint8_t *buffer, size_t buffer_size) {
if (buffer_size < 8) return; // Minimum header size
uint32_t box_length = *(uint32_t*)buffer;
if (box_length > buffer_size - 8) return; // Bounds check
uint8_t *box_data = buffer + 8;
process_box_data(box_data, box_length);
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Kofax Power PDF installed on a Windows target.
- Ability to deliver a malicious JP2 file (e.g., via email, web download).
Lab Setup:
- Environment: Windows 10/11 VM with Kofax Power PDF (vulnerable version).
- Tooling: Python for crafting the malicious JP2 file, a debugger (x64dbg) for analysis.
Exploitation Steps:
- Craft Malicious JP2: Create a JP2 file with a manipulated box length. For example, set the box length to a value larger than the actual data, causing an out-of-bounds read.
- Deliver File: Send the file to the victim via email or host it on a malicious website.
- Trigger: Victim opens the file in Kofax Power PDF.
- Code Execution: The out-of-bounds read can be used to leak memory or, with careful heap manipulation, achieve arbitrary write and code execution.
Example Python script to generate a malformed JP2:
import struct
def create_malicious_jp2():
# Minimal JP2 file with a corrupted box length
signature = b'\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a'
# Box with manipulated length (0xFFFFFFFF)
box_header = struct.pack('>I', 0xFFFFFFFF) + b'jp2c'
# Minimal data
data = b'A' * 100
return signature + box_header + data
with open('malicious.jp2', 'wb') as f:
f.write(create_malicious_jp2())
Note: This is a simplified example. Real exploitation requires precise heap layout and may involve multiple boxes.
Blue Team (Defense)
Detection:
- Monitor for unusual JP2 files being opened by Kofax Power PDF.
- Use endpoint detection and response (EDR) to alert on crashes or anomalous behavior in the PDF process.
Mitigation:
- Restrict execution of Kofax Power PDF in sandboxed environments.
- Implement application whitelisting to prevent untrusted files from being opened.
- Use network segmentation to limit the spread of potential malware.
Indicators of Compromise (IOCs)
- File Hashes: (None publicly available; generate upon analysis)
- Network Indicators: Connections to known malicious IPs or domains (if exploitation involves callbacks).
- Process Behavior: Kofax Power PDF process (e.g.,
PowerPDF.exe) crashing or exhibiting unusual memory access patterns. - Registry Keys: (None specific)
- YARA Rule: See Detection Engineering.
Detection Engineering
YARA Rule
rule CVE_2024_5510_JP2_OOB_Read {
meta:
description = "Detects malformed JP2 files targeting CVE-2024-5510"
author = "Valters IT"
date = "2025-04-10"
hash = "unknown"
strings:
$jp2_header = { 00 00 00 0C 6A 50 20 20 0D 0A 87 0A }
$jp2c_box = { 6A 70 32 63 }
$large_length = /[\x00-\xFF]{4}[\x00-\xFF]{4}[\x00-\xFF]{4}[\x00-\xFF]{4}/
condition:
$jp2_header at 0 and $jp2c_box and #large_length > 0
}
Sigma Rule
title: CVE-2024-5510 - Kofax Power PDF JP2 Parsing OOB Read
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects potential exploitation of CVE-2024-5510 via malformed JP2 files
author: Valters IT
date: 2025-04-10
logsource:
category: file_event
product: windows
detection:
selection:
Image|endswith: '\PowerPDF.exe'
TargetFilename|endswith: '.jp2'
condition: selection
falsepositives:
- Legitimate JP2 files opened by users
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-5510 - Kofax Power PDF JP2 File Download"; flow:to_client,established; file_data; content:"|00 00 00 0C 6A 50 20 20 0D 0A 87 0A|"; within:12; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
- Patch Status: No official patch available. Monitor vendor advisories for updates.
- Workarounds:
- Disable or restrict the use of Kofax Power PDF until a patch is released.
- Use alternative PDF viewers that do not parse JP2 files.
- Implement file reputation and sandboxing for all incoming JP2 files.
- Compensating Controls:
- Enable ASLR, DEP, and CFG on the system.
- Use application control to block untrusted executables.
- Deploy endpoint detection and response (EDR) with behavioral analysis.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.