Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted PST/OST/PAB file
-
DeliveryVictim opens file in pffexport/pypff
-
ExploitOff-by-one bypasses 6c entry bounds check
-
ExecutionParser reads past values array
-
ImpactLeak adjacent heap memory or crash
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Off-by-one prevention
|
| Exploitation Conditions | Exploitation requires an attacker-supplied, specially crafted PST, OST, or PAB file to be parsed by an application built on libpff (explicitly pffexport or pypff); the flaw is reached through the 6c table record-entry parsing path (libpff_table_read_6c_record_entries). Per the CVSS vector it is a local vector (AV:L) with passive user interaction (UI:P) and no authentication (PR:N) - meaning a user or automated pipeline must open/process the malicious file for the bug to trigger. Limiting factors: there is no remote network trigger, no privilege escalation or write primitive, and impact is confined to reading adjacent heap memory (low confidentiality) or crashing the parser (availability); no special non-default configuration is required beyond using an affected libpff version (through 20260926) to process the hostile file. |
| Impact | This is a moderate, not emergency, priority. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P) describes a locally-triggered, low-complexity flaw with no privileges but requiring passive user interaction - i.e. a victim must open or process an attacker-supplied file. Impact is bounded: VC:L (a heap out-of-bounds READ exposing adjacent memory) and VA:H (crash/denial of the parsing process), with no integrity impact (VI:N) and no code execution. The signals are consistent and point to low real-world urgency: EPSS is 0.13% (2nd percentile), there is no CISA KEV listing, and the vuln.today decision label is 'this_month' - meaning patch on a normal cycle, not immediately. The CWE-193 off-by-one classification is directly corroborated by the vendor source diff, which changes the bounds check in libpff_table_read_6c_record_entries from '(16 * values_array_number) > table_values_array_data_size' to 'values_array_number >= (table_values_array_data_size / 16)', confirming the mechanism is an arithmetic bounds-check error, not a write primitive. The 'Buffer Overflow' tag overstates this: it is an out-of-bounds read, so the practical risk is information disclosure of adjacent heap bytes and process crashes, not memory corruption leading to RCE. Net: a legitimate but low-to-moderate issue, appropriately rated ~6.9, driven mostly by the availability (crash) impact. |
| Exploit ScenarioDerived | An attacker crafts a malicious PST, OST, or PAB file with a malformed 6c table record entry and delivers it to a victim (for example, an analyst or an automated forensics/ingestion pipeline). When the file is processed by a libpff-based tool such as pffexport or a pypff script, the off-by-one bounds check is bypassed and the parser reads past the end of the values-array buffer, leaking adjacent heap memory into output or crashing the process. A public technical write-up (hackmd) and a VulnCheck advisory describe the flaw; these are analysis references and are not verified as working weaponized exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Heap out-of-bounds read in libpff through 20260926 can expose adjacent heap memory or crash applications such as pffexport and pypff when they parse a crafted PST, OST, or PAB file. The off-by-one bounds check in libpff_table_read_6c_record_entries is reached only when a user or automated pipeline opens the malicious file (local vector, passive user interaction, no authentication), and impact is limited to low confidentiality loss and high availability disruption. No public exploit identified at time of analysis; EPSS is 0.13% (2nd percentile) and the issue is rated moderate rather than emergency priority, with an upstream fix commit available.
RemediationAI
Upstream fix available (commit cb83eb38ffdbdfe2c69238fe7ce481ddc8513266); a released patched version is not independently confirmed, so apply that commit or upgrade to a libpff build after the 20260926 affected range that contains it. The patch corrects the off-by-one check in libpff_table_read_6c_record_entries and adds a values_array_size bound in libpff_table_read_values_array; review the GitHub issue at https://github.com/libyal/libpff/issues/172 for vendor guidance. No vendor workaround is documented in the available references; until a fixed build is deployed, exposure is confined to applications such as pffexport and pypff that parse attacker-supplied PST, OST, or PAB files, so restricting such processing to trusted files limits the attack surface but does not remediate the flaw.
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
libpff is libyal's library for parsing Personal Folder File (PFF) formats, including PST, OST, and PAB containers, and is used by tools such as pffexport and the pypff Python bindings. The affected code path, libpff_table_read_6c_record_entries in libpff/libpff_table.c (lines 5431-5445 in the 20260926 snapshot), validates the number of 16-byte values-array entries against the table values-array data size with an off-by-one comparison (CWE-193); the upstream fix changes the check to use division and a >= comparison and adds a separate bound check on column_definition->values_array_size in libpff_table_read_values_array. A crafted 6c table record can therefore cause the parser to read past the end of a heap buffer, yielding adjacent memory disclosure or a crash. CPE cpe:2.3:a:libyal:libpff:*:*:*:*:*:*:*:* matches the affected library. The trigger requires processing an attacker-supplied file; there is no remote network trigger, privilege escalation, or write primitive, and the independently assessed vector is AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H.
Know when Libpff 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
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
AV:L and UI:R because a victim must open an attacker-supplied file locally; PR:N as no auth is needed; C:L for the heap read, I:N (read-only), A:H for the crash.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
libpff through 20260926 contains an off-by-one bounds check in libpff_table_read_6c_record_entries that allows attackers to trigger a heap out-of-bounds read via crafted 6c table record entries. Attackers can supply crafted PST, OST or PAB files to applications like pffexport or pypff to read adjacent heap memory or cause crashes.
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.
libpff_item_tree_create_node in libpff_item_tree.c in libpff before experimental-20180714 allows attackers to cause a de
Heap out-of-bounds reads in libpff through 20260926 allow attackers to crash applications (denial of service) and disclo
Heap out-of-bounds read in libpff (libyal) versions 0 through 20260926 allows a crafted PST, OST or PAB mail-store file
The libpff_name_to_id_map_entry_read function in libpff_name_to_id_map.c in libyal libpff through 2018-04-28 allows remo
EUVD-2026-110483
GHSA-vvjh-vch2-576w
NVD
CVE.org
EPSS
Exploit-DB