Skip to main content

HDF5 EUVDEUVD-2026-115912

| CVE-2026-120754 LOW
Use of Uninitialized Resource (CWE-908)
2026-11-03 HDFG GHSA-j35h-4545-xh77
1.9
CVSS 4.0 · Vendor: HDFG
View

Attack ChainAIDerived

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

  1. Access
    Craft HDF5 file with truncated scaleoffset chunk
  2. Delivery
    Deliver file to victim user or application
  3. Exploit
    Victim reads the affected dataset
  4. Execution
    Filter decodes uninitialized heap remainder
  5. Impact
    Process memory disclosed as dataset data

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Variable initialization
Exploitation Conditions

Exploitation requires that the targeted dataset use the HDF5 scaleoffset filter and that the victim open and read that dataset from an attacker-supplied HDF5 file in which the filtered chunk record is truncated (fewer bytes stored than the chunk's declared/unfiltered size); H5D__chunk_lock() sizes the chunk buffer to the larger of stored and unfiltered sizes and fills only the stored bytes, so the truncated chunk passes the allocation-based bounds check and the uninitialized remainder is decompressed and returned. Limiting factors that reduce real-world risk: the vector is local (the attacker must get the file to the victim, not reach it over the network), it requires user/application interaction to read the dataset, the affected dataset must specifically employ the scaleoffset filter, and the impact is limited to confidentiality (heap memory disclosure) with no code execution, data modification, or crash. Because the reads stay within the allocation, AddressSanitizer does not detect the issue, which may delay discovery in testing.

Impact

This is a low-priority issue, and the signals are largely consistent on that. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N) yields a base score of 1.9, and vuln.today assigns a 'monitor' decision label - the two agree that this is not urgent. The vector is local (AV:L) and requires passive user interaction (UI:P): a victim must read a crafted HDF5 file, so there is no remote network exposure. Impact is confined to low confidentiality (VC:L) - disclosure of unrelated heap bytes returned as dataset values - with no integrity or availability impact, matching CWE-908 (use of uninitialized resource). No CISA KEV listing and no EPSS score are present in the input, so there is no signal of active or probable exploitation. The one conflicting signal is the CVSS exploit-maturity flag E:P (Proof-of-Concept): it claims a PoC exists, yet the only reference supplied is the vendor fix PR (HDFGroup/hdf5#6585), not an exploit or PoC reference - so the E:P claim cannot be verified from the provided data and should be confirmed with the source. Overall this is a genuinely high-CVSS-irrelevant case: it is a real memory-disclosure bug but low real-world risk given local vector, required user interaction, limited (info-disclosure-only) impact, and the fact that it is an incomplete-fix follow-up to CVE-2026-19029.

Exploit ScenarioDerived

An attacker crafts an HDF5 file containing a dataset whose scaleoffset-filtered chunk is truncated (shorter than the bytes the chunk header claims). When a user or application opens the file and reads that dataset, H5Z__filter_scaleoffset() decodes the uninitialized remainder of the over-sized chunk allocation and returns unrelated heap contents to the caller, disclosing process memory. The input references a fix PR but no working exploit code; the CVSS vector's E:P flag asserts a PoC, which is not verified against any supplied PoC reference.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

HDF5 through 2.2.0 discloses process heap memory when an application opens and reads a dataset that uses the scaleoffset filter from a crafted file whose filtered chunk record is truncated. The decode path in H5Z__filter_scaleoffset() validates reads against the allocated size of the chunk buffer instead of the number of bytes actually stored, and because H5D__chunk_lock() sizes that buffer to the larger of the stored and unfiltered chunk sizes while filling only the stored bytes, the truncated chunk passes the bounds check and the uninitialized remainder is decompressed and returned as dataset data. The vulnerability is local (CVSS:3.1/AV:L/AC:L/PR:N/UI:R), requires the victim to open and read the crafted file, and is limited to confidentiality impact with no code execution, modification, or crash; an upstream fix exists in PR 6585 but no released patched version is confirmed, and no public exploit has been identified.

RemediationAI

No vendor-released patched version is confirmed at time of analysis; the fix exists as upstream PR/commit https://github.com/HDFGroup/hdf5/pull/6585 and a released version containing it should be tracked and adopted once published, so treat current HDF5 builds through 2.2.0 as unpatched for this issue. Because exploitability depends on the scaleoffset filter being applied to the dataset being read, deployments that must consume untrusted HDF5 files before a patched release can reduce exposure by avoiding the scaleoffset filter for datasets exchanged with untrusted parties and by validating chunk lengths against the declared unfiltered size before decoding - noting that this requires application-level changes and does not protect files already written with the filter. Running decoding of untrusted files in a sandboxed or memory-isolated process limits the confidentiality impact of leaked heap contents, at the cost of performance and operational complexity. AddressSanitizer will not detect this condition, so test suites relying on it should add explicit checks for truncated chunk records such as those added in test/direct_chunk.c. Upstream also hardened the szip and fletcher32 filters in the same change, so applying the full commit is preferable to a narrow scaleoffset-only fix.

Affected VersionsENISA

Scale-Offset Filter < 2.3.0

Affected Packages

euvd scale_offset_filter fix: 2.3.0

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

HDF5 stores large datasets as chunks, and each chunk may pass through a filter pipeline on write and read. The scaleoffset filter (src/H5Zscaleoffset.c) prepends a 21-byte parameter block containing minbits, a minimum-value size field and the minimum value itself, and the decode path in H5Z__filter_scaleoffset() must parse that header before decompressing the payload. The root cause class is CWE-908 (use of uninitialized resource): the code checked the header reads against *buf_size, the allocated size of the chunk buffer, rather than nbytes, the number of bytes actually read from the file. H5D__chunk_lock() deliberately allocates the filtered chunk buffer to hold the larger of the stored (filtered) chunk size and the unfiltered chunk size, but fills only the stored bytes, so a truncated chunk leaves uninitialized heap past the valid data yet still satisfies the allocation-based bound. The filter then decompresses out of that uninitialized region and hands unrelated heap contents back to the caller as dataset values. Because every read stays inside the allocation, AddressSanitizer does not flag it, which is why the flaw survived earlier fixes. The same incomplete-fix pattern affected the szip filter, which subtracted its fixed 4-byte uncompressed-length header from the chunk length without first verifying the chunk was at least that long (allowing a size_t underflow and reads past the chunk buffer), and the fletcher32 filter, which accepted a chunk holding only its 4-byte checksum. The upstream PR 6585 adds explicit minimum-length checks (nbytes < 5 for the scaleoffset fields, nbytes <= SZIP_HEADER_LEN and nbytes <= FLETCHER_LEN for the others) and converts the scaleoffset bounds checks to use nbytes instead of *buf_size. This is an incomplete fix for CVE-2026-19029.

Know when Scale Offset Filter 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 (HDFG) PRIMARY 1.9 LOW
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 3.3 LOW

Triggered only when a victim reads a crafted file, so AV:L and UI:R with PR:N; the flaw leaks heap bytes into returned data, giving C:L with no integrity or availability impact.

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

Primary rating from Vendor (HDFG).

CVSS VectorVendor: HDFG

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
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 16:17 EUVD

DescriptionCVE.org

HDF5 through 2.2.0 contains an uninitialized memory read vulnerability in H5Z__filter_scaleoffset() in src/H5Zscaleoffset.c. The decode path validates reads against the allocated size of the chunk buffer rather than the number of bytes actually read from the file. Because H5D__chunk_lock() deliberately sizes filtered chunk buffers to the larger of the stored and unfiltered chunk sizes and fills only the stored bytes, a truncated chunk passes these bounds checks and is decompressed from the uninitialized remainder of the allocation. Unrelated heap contents are then returned to the caller as dataset data. Because the reads remain within the allocation, the issue is not detected by AddressSanitizer. An attacker who can get a user or application to read a dataset from a crafted HDF5 file can cause disclosure of process memory. This issue exists because of an incomplete fix for CVE-2026-19029.

Threat Intelligence Overview

Prevalence
Medium
widely used scientific data library, concentrated in research and data-analysis contexts
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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 LOW
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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