Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply undersized font buffer to app
-
ExploitApp calls Text::load from memory
-
ExecutionOut-of-bounds read in SfntLoader::gen
-
ImpactCrash or adjacent heap memory disclosure
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the consuming application to load an attacker-controlled font payload smaller than four bytes directly from memory through ThorVG's public memory-loading API (e.g., tvg::Text::load(..., data, size, "ttf", true)) in a version prior to 1.0.7. A key limiting factor: loading the same malformed font via a file path uses mmap, whose page alignment typically masks the over-read, so the file-path code path is not reliably affected - the vulnerability is specifically exposed through the in-memory API. Impact is further limited to adjacent heap disclosure or a crash (no code execution), and the app must actually accept and parse untrusted font bytes; the NVD vector additionally marks UI:R, implying some victim interaction in that assessment. |
| Impact | This is a genuine but modest-priority issue, not a high-urgency emergency. The CWE-125 out-of-bounds read yields only limited impact: adjacent heap disclosure (C:L) or an application crash. There is a notable discrepancy in the severity signals - the NVD-style input vector is CVSS 4.3 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N) with UI:R, while the vendor's GHSA advisory rates it 5.3 with UI:N (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N); the difference hinges on whether victim interaction is required, which realistically depends on how the consuming application feeds data to the memory-loading API. No EPSS score and no KEV listing were provided in the input, so there is no signal of active or probable exploitation - exploitation status is 'no public exploit identified at time of analysis' in the strict sense, but note the GHSA advisory ships a documented reproduction (1-byte payload, ASan-caught) and an attached thorvg.zip, so a public PoC reference exists; it is not verified as working exploit code. The vuln.today Decision label is 'this_month', consistent with a patch-on-normal-cadence posture rather than act_now. Net: real and worth patching this month, but the limited technical impact (no code execution, no integrity impact, PR:N but memory-API-dependent) keeps it well below critical. |
| Exploit ScenarioDerived | An application using ThorVG < 1.0.7 accepts attacker-controlled font bytes (for example, an embedded TTF/OTF in a web-rendered animation or document) and passes them to the in-memory loader via tvg::Text::load. The attacker supplies a buffer shorter than four bytes, causing SfntLoader::gen to read past the allocation while checking the font-type magic, which can crash the process or leak adjacent heap data. A public PoC reference exists (documented reproduction steps plus an attached archive in the GHSA advisory); it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Out-of-bounds read in ThorVG's SFNT/TTF font loader (all versions before 1.0.7) lets an attacker who can supply a font buffer smaller than four bytes through the in-memory loading API, such as tvg::Text::load(..., data, size, "ttf", true), trigger a heap over-read in SfntLoader::gen. The result is limited to adjacent heap memory disclosure or an application crash, with no code execution path; the same malformed font delivered by file path is largely masked because mmap page alignment pads the read. This is not in CISA KEV and there is no confirmed active exploitation, but the GitHub advisory publishes a reproduction payload (a 1-byte buffer) that trips an ASan heap-buffer-overflow, and the issue is fixed in 1.0.7; overall it is a genuine but modest-priority parsing defect that matters mainly to applications that accept untrusted font bytes from memory.
RemediationAI
Vendor-released patch: ThorVG 1.0.7, published at https://github.com/thorvg/thorvg/releases/tag/v1.0.7, with the code fix in commit 1dc232a33535946b5eed5fd65e993b13226da0ca and full details in advisory GHSA-crfw-c34f-vqrj; upgrading to 1.0.7 or later is the complete fix and the vendor treats the added length check as the resolution. Where an immediate upgrade is not possible, the effective compensating control is at the integration layer rather than inside ThorVG: validate that any font buffer passed to tvg::Text::load (and equivalent memory-loading entry points) is at least four bytes long, and reject short payloads before they reach the parser, which stops the trigger but leaves the vulnerable library in place for other inputs and depends on the calling code being correctly patched. Routing font data through file-path loading instead of the memory API reduces exposure because mmap page alignment typically masks the over-read, at the cost of losing the direct in-memory workflow and relying on masking rather than on validation. Restricting font ingestion to trusted, well-sized assets and running AddressSanitizer builds in test pipelines will catch the over-read during fuzzing or QA. No fixed-version backport for older branches is documented in the available sources.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ThorVG is a vector graphics engine used for SVG and font rendering; its SFNT loader handles both TrueType (TTF) and OpenType (OTF) containers. SFNT-based fonts identify their flavor by a 32-bit tag in the first four bytes (0x00010000 or the ASCII 'true' for scalable TrueType, 0x4F54544F or 'OTTO' for CFF-based OpenType). In tvgSfntLoader.cpp, SfntLoader::gen computed that tag with data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3] before verifying that the supplied buffer was at least four bytes long, which is the classic CWE-125 precondition: the length of attacker-influenced input is trusted rather than validated before indexed access. The upstream commit 1dc232a33535946b5eed5fd65e993b13226da0ca addresses this by guarding the tag computation and the reader-selection branches with a size check. Two delivery paths behave differently: reading from a file through mmap often rounds the mapping to a page boundary so the over-read lands inside mapped memory and stays invisible, whereas the public memory-loading API passes the caller's exact buffer and exposes the out-of-bounds access directly. Only adjacent heap disclosure or a crash is described in the advisory; no memory corruption write primitive is involved.
Know when Thorvg gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
Malformed font can arrive over the network and the memory API parses it without auth or interaction (AV:N/AC:L/PR:N/UI:N); over-read yields limited heap disclosure (C:L) and possible crash (A:L), no integrity impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Thor Vector Graphics (ThorVG) is a production-ready vector graphics engine. Prior to 1.0.7, the SFNT/TTF font loader's SfntLoader::gen function in tvgSfntLoader.cpp reads data[0] through data[3] to identify the font type without first checking that the input buffer contains at least four bytes. Loading an undersized font directly from memory through public APIs such as tvg::Text::load causes an out-of-bounds read. Loading through a file path using mmap can mask the read because of page alignment; the memory-loading API directly exposes it. Depending on memory layout, a malformed short font may crash the consuming application or disclose adjacent heap memory. This issue is fixed in version 1.0.7.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-111405
NVD
CVE.org
EPSS
GitHub
Exploit-DB