CVE-2025-27363
High · 8.1 CISA KEVCVSS
8.1
EPSS
27.8%
Published
Mar 11, 2025
CISA due date
May 27, 2025
Cloudanix analysis
A malicious font file can compromise or crash software that reads it unless the affected font-handling components are updated.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is a heap memory corruption issue in FreeType 2.13.0 and earlier when parsing TrueType GX and variable font subglyph structures. A signed short is converted to an unsigned long and then incremented, causing integer wraparound and an undersized heap allocation; subsequent parsing can write several signed long values beyond the allocated buffer. If an affected application, service, renderer, or operating system component processes a crafted font, the out-of-bounds write can crash the process or potentially allow attacker-controlled code execution with the privileges of the process doing the font parsing.
Why it matters to the business
Successful exploitation can let an attacker compromise systems through crafted fonts embedded in documents, webpages, images, PDFs, emails, or uploaded content processed by vulnerable software. Because this vulnerability is listed in CISA KEV, has active in-the-wild exploitation reporting, and had a KEV remediation deadline of 2025-05-27, unpatched systems should be treated as high-priority exposure even though exploitation may require a carefully crafted font and a vulnerable parsing path. Operational consequences include endpoint compromise, service takeover, data theft, malware installation, and outages in applications that render or inspect untrusted font content.
How an attack unfolds
An attacker prepares a malformed TrueType GX or variable font that triggers the signed-to-unsigned conversion and heap allocation mismatch in vulnerable FreeType code. The font is then delivered through a channel where it will be parsed automatically or semi-automatically, such as a webpage, document, PDF, email attachment, image-processing workflow, file previewer, print/rendering pipeline, or upload-scanning service. When the vulnerable parser processes the subglyph data, it allocates a buffer that is too small and writes out of bounds. A failed attempt may produce a crash, while a successful exploit may manipulate heap state to execute code in the affected process. Since exploitation has been reported in the wild, organizations should assume adversaries may use this as part of targeted compromise chains, especially against systems that parse untrusted fonts at scale.
How to fix it
Upgrade FreeType to a non-vulnerable release newer than 2.13.0 wherever it is installed, bundled, vendored, or statically linked. Do not rely only on operating system package inventory; browsers, desktop applications, PDF/rendering tools, container images, firmware, appliances, and server-side document/image processing services may carry their own FreeType copy. For the listed Red Hat Enterprise Linux 6 ELS package set, update affected kernel-related packages to 0:2.6.32-754.43.1.el6 or later, including kernel, kernel-debug, kernel-devel, kernel-doc, kernel-firmware, kernel-kdump, perf, python-perf, and associated debuginfo/ABI packages where installed. After patching kernel packages, reboot into the updated kernel. As interim mitigation, restrict processing of untrusted fonts, disable or sandbox font preview/rendering features where feasible, isolate document-conversion and upload-processing workloads, block risky font uploads when business processes allow, and ensure application sandboxing, exploit protection, and memory-hardening controls are enabled.
How to confirm the fix worked
Confirm the deployed FreeType version is newer than 2.13.0 or that vendor packages include the backported fix. On RPM-based systems, verify relevant package versions with package-manager queries and confirm Red Hat Enterprise Linux 6 ELS kernel-related packages are at 0:2.6.32-754.43.1.el6 or later where applicable. Check running processes and application dependencies for dynamically loaded libfreetype libraries, and scan application/container images for bundled or statically linked FreeType copies. For kernel package remediation, verify the running kernel after reboot, not only the installed package version. Validate compensating controls by testing that untrusted font uploads and rendering workflows are blocked, sandboxed, or routed only to patched components. Vulnerability scanners should be configured to detect both OS packages and embedded third-party libraries.
Typical attack path
- Identify a target application, endpoint component, document renderer, browser component, image/PDF processor, or service that uses FreeType 2.13.0 or earlier, including bundled or statically linked copies.
- Craft or obtain a malicious TrueType GX or variable font file that triggers the vulnerable subglyph parsing path.
- Embed or deliver the font through a webpage, document, PDF, email, archive, upload feature, rendering workflow, or other content-processing path.
- Wait for the vulnerable component to parse the font automatically or during user/content processing.
- Trigger heap corruption via the undersized allocation and out-of-bounds write.
- Achieve process crash, denial of service, or code execution with the privileges of the affected process.
- Use resulting execution to drop malware, access sensitive data, move laterally, or establish persistence.
How to detect it
To determine whether exploitation may already have occurred, review endpoint, server, application, EDR, crash, and content-processing logs for crashes or exploit-prevention events in processes that render or inspect fonts, documents, PDFs, images, webpages, email attachments, or uploads. Focus on events involving libfreetype, freetype, TrueType GX, variable fonts, and recent processing of .ttf, .otf, .ttc, .woff, or .woff2 files, especially shortly before abnormal child process creation, unexpected network connections, or file writes. On Linux systems, search syslog, journald, kernel logs, audit logs, coredump records, and application logs for segmentation faults, heap corruption, allocator aborts, or core dumps tied to renderers, converters, browsers, thumbnailers, print services, email scanners, and upload processors. On Windows and macOS endpoints running software that bundles FreeType, review application crash logs, EDR memory-corruption detections, and suspicious renderer/helper process behavior. Preserve suspicious font files for offline analysis and compare file arrival time, parsing time, crash time, and any subsequent process execution. Because public reporting does not provide a universal exploit filename, IP address, or payload marker, detection should emphasize vulnerable parser crashes plus post-crash execution anomalies rather than network IOCs alone.
- libfreetype
- freetype
- FreeType
- segfault.*libfreetype
- SIGSEGV.*libfreetype
- core dumped.*libfreetype
- malloc(): memory corruption
- malloc(): corrupted top size
- free(): invalid next size
- double free or corruption
- heap-buffer-overflow.*freetype
- AddressSanitizer.*freetype
- TrueType GX
- .ttf
- .otf
- .ttc
- .woff
- .woff2
- gvar
- fvar
- glyf
What your security team should do
- Treat this as urgent because it is in CISA KEV, has reported active exploitation, and the KEV deadline has passed.
- Inventory all FreeType deployments, including OS packages, containers, desktop applications, browsers, PDF/image/document processing tools, appliances, and vendored libraries.
- Prioritize patching internet-facing and high-volume content-processing systems that parse files, documents, images, PDFs, email attachments, or uploaded fonts from untrusted sources.
- Upgrade FreeType to a fixed version newer than 2.13.0 and apply vendor backports; for the listed Red Hat Enterprise Linux 6 ELS packages, update to 0:2.6.32-754.43.1.el6 or later and reboot where required.
- Temporarily disable, restrict, or sandbox untrusted font parsing in upload pipelines, preview services, document conversion systems, and email/content inspection tools until patching is complete.
- Search telemetry for crashes, abnormal renderer exits, exploit-protection events, and suspicious processing of TrueType GX or variable font files before the patch date.
- Review exposed document-rendering and file-upload services for post-exploitation activity, including unexpected child processes, outbound connections, dropped files, and credential access attempts.
- Add regression checks to software composition analysis so future builds fail when FreeType 2.13.0 or earlier is introduced.
The record
An out of bounds write exists in FreeType versions 2.13.0 and below (newer versions of FreeType are not vulnerable) when attempting to parse font subglyph structures related to TrueType GX and variable font files. The vulnerable code assigns a signed short value to an unsigned long and then adds a static value causing it to wrap around and allocate too small of a heap buffer. The code then writes up to 6 signed long integers out of bounds relative to this buffer. This may result in arbitrary code execution. This vulnerability may have been exploited in the wild.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | freetype | 0 | 2.9.1-10.el8_10 |
| AlmaLinux:8 | freetype-devel | 0 | 2.9.1-10.el8_10 |
| AlmaLinux:8 | mingw32-freetype | 0 | 2.8-3.el8_10.1 |
| AlmaLinux:8 | mingw32-freetype-static | 0 | 2.8-3.el8_10.1 |
| AlmaLinux:8 | mingw64-freetype | 0 | 2.8-3.el8_10.1 |
| AlmaLinux:8 | mingw64-freetype-static | 0 | 2.8-3.el8_10.1 |
| Alpine:v3.22 | freetype | 0 | 2.13.1-r0 |
| Android | platform/external/freetype | 13:0 | 13:2025-05-01 |
| Android | platform/external/freetype | 14:0 | 14:2025-05-01 |
| Debian:11 | freetype | 0 | No fix |
| Debian:11 | freetype | 0 | 2.10.4+dfsg-1+deb11u2 |
| Debian:12 | freetype | 0 | No fix |
| Debian:12 | freetype | 0 | 2.12.1+dfsg-5+deb12u4 |
| Debian:13 | freetype | 0 | No fix |
| Debian:14 | freetype | 0 | 2.13.1+dfsg-1 |
| Mageia:9 | freetype2 | 0 | 2.13.0-1.2.mga9 |
| SUSE:Enterprise Storage 7.1 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Enterprise Storage 7.1 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Micro 5.1 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Micro 5.2 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Micro 5.3 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Micro 5.4 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Micro 5.5 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | freetype2 | 0 | 2.6.3-7.21.1 |
| SUSE:Linux Enterprise Server 12 SP5-LTSS | ft2demos | 0 | 2.6.3-7.21.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | freetype2 | 0 | 2.6.3-7.21.1 |
| SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 | ft2demos | 0 | 2.6.3-7.21.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Manager Proxy 4.3 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| SUSE:Manager Server 4.3 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| openSUSE:Leap 15.6 | freetype2 | 0 | 2.10.4-150000.4.18.1 |
| openSUSE:Leap 15.6 | ft2demos | 0 | 2.10.4-150000.4.18.1 |
Related vulnerabilities
- CVE-2022-27406 FreeType commit 22a0cccb4d9d002f33c1ba7a4b36812c7d4f46b5 was discovered to contain a… Also affects freetype
- CVE-2022-27405 FreeType commit 53dfdcd8198d2b3201a23c4bad9190519ba918db was discovered to contain a… Also affects freetype
- CVE-2020-15999 Heap buffer overflow in Freetype in Google Chrome prior to 86.0.4240.111 allowed a remote… Also affects freetype
- CVE-2017-8105 FreeType 2 before 2017-03-24 has an out-of-bounds write caused by a heap-based buffer… Also affects freetype
- CVE-2015-9381 FreeType before 2.6.1 has a heap-based buffer over-read in T1_Get_Private_Dict in… Also affects freetype
- CVE-2015-9383 FreeType before 2.6.2 has a heap-based buffer over-read in tt_cmap14_validate in… Also affects freetype
- CVE-2016-10244 The parse_charstrings function in type1/t1load.c in FreeType 2 before 2.7 does not ensure… Also affects freetype
- CVE-2014-9745 The parse_encoding function in type1/t1load.c in FreeType before 2.5.3 allows remote… Also affects freetype