Skip to main content

libpff EUVDEUVD-2026-110483

| CVE-2026-116735 MEDIUM
Off-by-one Error (CWE-193)
2026-10-26 VulnCheck GHSA-vvjh-vch2-576w
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver crafted PST/OST/PAB file
  2. Delivery
    Victim opens file in pffexport/pypff
  3. Exploit
    Off-by-one bypasses 6c entry bounds check
  4. Execution
    Parser reads past values array
  5. Impact
    Leak 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

libpff 0 ≤20260926

Affected Packages

euvd libpff no fix

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

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
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
vuln.today AI 6.1 MEDIUM

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.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Low
niche forensic PST/OST parsing library used mainly in DFIR tooling
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy