CVE-2025-14235
Executive Summary
CVE-2025-14235 is a critical buffer overflow vulnerability in the XPS font fpgm data processing component of multiple Canon Small Office Multifunction Printers and Laser Printers. The flaw resides in how the printer firmware parses TrueType/OpenType font programs embedded within XPS documents. An attacker on the same network segment can send a specially crafted XPS file to the printer, triggering a stack-based buffer overflow. This can lead to a denial of service (device unresponsive) or, in a worst-case scenario, arbitrary code execution with the privileges of the printer’s firmware. The vulnerability affects firmware version v06.02 and earlier across a wide range of Canon models sold in Japan, the US, and Europe. No public exploit code or proof-of-concept is currently available, and no official patch has been released. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the potential for weaponization remains high given the severity of the overflow.
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: 0.0 (No official vector assigned)
- Attack Vector (AV): Adjacent Network (A) – attacker must be on the same network segment.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – no authentication needed.
- User Interaction (UI): None (N) – no user action required.
- Scope (S): Unchanged (U) – vulnerability does not affect other components.
- Confidentiality (C): High (H) – potential for arbitrary code execution.
- Integrity (I): High (H) – potential for arbitrary code execution.
- Availability (A): High (H) – device can become unresponsive.
Threat Level: Critical. The vulnerability allows remote code execution without authentication, making it highly dangerous for enterprise environments where printers are often exposed on internal networks.
Deep Dive & Mechanics
The vulnerability is a classic stack-based buffer overflow (CWE-121) in the XPS font processing routine. When a Canon printer receives an XPS document, it parses the embedded font data, specifically the fpgm (Font Program) table. This table contains TrueType/OpenType instructions that define how glyphs are rendered. The printer’s firmware copies this data into a fixed-size stack buffer without proper bounds checking. By providing an oversized fpgm table, an attacker can overwrite the return address and other critical stack data, leading to control-flow hijacking.
The attack flow:
- Attacker crafts an XPS document with a malicious font containing an oversized
fpgmtable. - The document is sent to the printer via network printing protocols (e.g., IPP, SMB, or direct TCP port 9100).
- The printer’s XPS parser reads the font data and copies it into a stack buffer.
- The buffer overflows, corrupting the stack.
- If the attacker carefully constructs the payload, they can overwrite the return address and redirect execution to shellcode embedded in the overflow data.
- The shellcode executes with the privileges of the printer’s firmware, allowing the attacker to install malware, exfiltrate data, or use the printer as a pivot point.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable code pattern. The vulnerable function likely looks like this:
void parse_fpgm_table(unsigned char *fpgm_data, unsigned int size) {
unsigned char buffer[256]; // Fixed-size stack buffer
// Vulnerable: no bounds check
memcpy(buffer, fpgm_data, size);
// ... process buffer ...
}
A patched version would include a bounds check:
void parse_fpgm_table(unsigned char *fpgm_data, unsigned int size) {
unsigned char buffer[256];
if (size > sizeof(buffer)) {
// Handle error, reject font
return;
}
memcpy(buffer, fpgm_data, size);
// ... process buffer ...
}
Exploitation & Lab Setup
Red Team
Lab Setup:
- Target: Canon printer with firmware v06.02 (e.g., Satera LBP670C Series).
- Attacker: Linux machine with Python and Scapy.
- Network: Same subnet as the printer.
Exploitation Steps:
- Identify the printer’s IP address (e.g., 192.168.1.100).
- Craft a malicious XPS document with an oversized
fpgmtable. Since no public exploit exists, you would need to reverse-engineer the firmware to find the exact offset and ROP gadgets. - Send the document to the printer using IPP:
import socket
def send_xps(ip, port, xps_data):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
sock.send(xps_data)
sock.close()
# Example: send to port 9100 (raw printing)
with open('malicious.xps', 'rb') as f:
xps_data = f.read()
send_xps('192.168.1.100', 9100, xps_data)
- Monitor for shell access or denial of service.
Blue Team
Detection:
- Monitor network traffic for unusually large XPS documents sent to printers.
- Use IDS/IPS rules to detect oversized
fpgmtables in XPS streams. - Enable printer logging and audit for unexpected crashes or reboots.
Mitigation:
- Segment printers on a separate VLAN with strict access controls.
- Disable XPS printing if not required.
- Apply vendor firmware updates as soon as they become available.
Indicators of Compromise (IOCs)
- Network: XPS documents with
fpgmtable size > 256 bytes. - Host: Printer logs showing repeated crashes or unexpected reboots.
- File: Malicious XPS files with embedded fonts containing oversized
fpgmtables. - Process: Unusual network connections from the printer to external IPs (if code execution achieved).
Detection Engineering
YARA Rule
rule CVE_2025_14235_XPS_FPGM_Overflow {
meta:
description = "Detects XPS files with oversized fpgm font table"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14235"
strings:
$fpgm_header = { 66 70 67 6D } // "fpgm" in ASCII
$xps_magic = { 50 4B 03 04 } // ZIP magic (XPS is a ZIP)
condition:
$xps_magic at 0 and $fpgm_header and (uint32be(@fpgm_header + 4) > 256)
}
Sigma Rule
title: CVE-2025-14235 XPS Font Buffer Overflow Attempt
id: 8a9b3c2d-1e5f-4a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects network traffic containing oversized fpgm tables in XPS documents
author: Valters IT
date: 2025-04-10
logsource:
category: network_connection
product: suricata
detection:
selection:
app_protocol: 'http'
http.request_body: 'PK\x03\x04' # XPS magic
http.request_body|contains: 'fpgm'
condition: selection
falsepositives:
- Legitimate large fonts in XPS documents
level: high
Suricata Rule
alert tcp $EXTERNAL_NET any -> $HOME_NET 9100 (msg:"CVE-2025-14235 XPS fpgm Buffer Overflow Attempt"; flow:to_server,established; content:"|50 4B 03 04|"; depth:4; content:"fpgm"; within:100; byte_test:4,>,256,0,relative,little; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Isolate affected printers on a separate VLAN with strict firewall rules. Disable XPS printing if not required.
- Short-term: Monitor vendor advisories for firmware updates. Apply patches as soon as they are released.
- Long-term: Implement network segmentation for all IoT/OT devices. Use IDS/IPS to detect anomalous XPS traffic. Regularly audit printer firmware versions.
- Workaround: If XPS is needed, use a print server that sanitizes XPS documents before forwarding to the printer.
Valters IT
DevSecOps & Cyber Threat Intelligence