Skip to main content

libaec EUVDEUVD-2026-115217

| CVE-2026-120457 MEDIUM
Unsigned to Signed Conversion Error (CWE-196)
2026-11-02 VulnCheck GHSA-6vjr-59w2-48mg
5.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Deliver crafted SZIP/CCSDS 121.0 stream
  2. Delivery
    Victim app decodes untrusted input
  3. Exploit
    Overlong fundamental sequence bypasses signed check
  4. Execution
    Out-of-bounds read in m_se_decode
  5. Impact
    Decoder crash or adjacent memory leaked into samples

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

Exploitation requires that an application built on libaec (<= 1.1.7) decode an attacker-controlled CCSDS 121.0 / SZIP stream in which a Second Extension (SE) block's first fundamental sequence is longer than 2^31 zero bits; this overlong length wraps the signed index 'm' negative and defeats the signed bounds check in m_se_decode() (src/decode.c). The flaw is reachable only through the SE decoder path, so the input must select Second Extension coding. Limiting factors: the vector is local (AV:L) and needs the victim to feed untrusted data to the decoder (UI:P / passive interaction) plus the specific oversized-FS attack requirement (AT:P), meaning it is not a remote-by-default network exploit; no authentication to the library is needed (PR:N). Primary outcome is a decoder crash (availability) with a secondary possibility of adjacent memory being emitted into decoded samples (limited confidentiality). The vendor fix (PR #66) is the applicable remediation.

Impact

This is a moderate, not emergency, priority. The vendor-assigned CVSS 4.0 vector (CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N, base 5.8) describes a local-vector flaw (AV:L) that is triggered only when a victim application passes attacker-supplied data to the decoder (UI:P, passive interaction) and additionally carries an attack requirement (AT:P) - consistent with the description's precondition that the malicious stream must contain 2^31 or more zero bits before the signed bounds check is bypassed. Impact is weighted toward availability (VA:H, decoder crash) with limited confidentiality (VC:L, adjacent memory leaked into decoded samples) and no integrity impact. The decision label from the input is 'this_month', not act_now or emergency, which aligns with the local vector and conditional trigger. No EPSS score and no KEV listing are present in the input, so there is no signal of active exploitation or mass-scan probability; a public PoC reference exists (a technical write-up and a regression test in the fix PR), which raises the practical likelihood of exploit development but is not the same as active exploitation. The CVSS 4.0 PR:N correctly reflects that no authentication is needed against the library itself, but real-world risk hinges on whether an exposed application feeds untrusted CCSDS 121.0/SZIP streams to libaec. Overall: a real but bounded defect worth patching within the vendor's suggested month-level window rather than an immediate crisis.

Exploit ScenarioDerived

An application that uses libaec (for example via HDF5/netCDF-based scientific data tooling) opens an attacker-supplied compressed data file or stream; the crafted CCSDS 121.0/SZIP payload encodes a Second Extension block whose fundamental sequence exceeds 2^31 zero bits, bypassing the signed bounds check in m_se_decode(). The decoder then reads out of bounds, crashing the process or copying adjacent heap memory into the decoded output. A public PoC reference exists (a hackmd write-up and a regression test in PR #66); it is not verified as working weaponized exploit code.

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

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

Alert me

AnalysisAIv1 – Nov 02, 2026

This is a moderate, not emergency, priority: an out-of-bounds read in libaec through 1.1.7 (m_se_decode() in src/decode.c) lets a crafted CCSDS 121.0 / SZIP stream crash the decoder and potentially leak adjacent memory into decoded samples. The flaw is only reachable when an application built on libaec decodes attacker-supplied data that selects Second Extension coding and whose first fundamental sequence is longer than 2^31 zero bits, which wraps a signed index negative and defeats the bounds check; the vector is local with the victim feeding untrusted input to the decoder (UI:P / AT:P), and no authentication to the library is involved (PR:N). An upstream fix exists in PR #66, but a tagged patched release is not independently confirmed; there is no CISA KEV entry and no public exploit code confirmed at time of analysis, though a public technical writeup of the signedness issue is referenced.

RemediationAI

Vendor patch: upstream fix in https://github.com/Deutsches-Klimarechenzentrum/libaec/pull/66, which changes the SE fundamental-sequence index in m_se_decode() from int32_t to uint32_t (src/decode.c) and adds the check_se_huge_fs_small_output regression test; a tagged release containing it is not independently confirmed from the supplied data, so consumers should apply the PR/commit to their vendored copy or track https://github.com/Deutsches-Klimarechenzentrum/libaec/issues/64 and rebuild against the first release that includes it. Because the only complete fix is the corrected decoder, organizations embedding libaec should pin and rebuild downstream packages rather than relying on configuration changes. Until a patched build is deployed, the actionable compensating control is to avoid feeding untrusted CCSDS 121.0 / SZIP streams to libaec-based decoders, or to perform such decoding in a sandboxed, memory-limited worker process (accepting the cost of reduced throughput and, if the sandbox is strict, loss of the ability to decode legitimate untrusted archives); restricting ingestion to trusted, authenticated sources likewise removes the attack path but is not practical where the decoder's purpose is handling external data. Monitoring for decoder crashes in processes that parse SZIP/HDF5 content gives a useful detection signal in the interim.

Affected VersionsENISA

libaec 0 ≤1.1.7

Affected Packages

euvd libaec 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

libaec is the Deutsches Klimarechenzentrum implementation of the CCSDS 121.0 adaptive entropy coder used for SZIP/HDF5-style compression. In the Second Extension (SE) decoder path, m_se_decode() reads the length of the block's first fundamental sequence into an index used to look up the SE table; that length was held in a signed 32-bit integer (int32_t m), so a fundamental sequence of 2^31 or more zero bits wraps the index negative and slips past a signed bounds check (CWE-196, unsigned-to-signed conversion error). The result is an out-of-bounds read of se_table, surfacing as a decoder crash (availability) with a secondary possibility of adjacent memory being emitted into decoded samples (limited confidentiality), and only when a one-byte output buffer forces the slow path. The upstream fix in PR #66 is a one-line type change from int32_t to uint32_t plus a regression test (check_se_huge_fs_small_output) that feeds an SE block whose first fundamental sequence exceeds 2^31 zero bits and expects AEC_DATA_ERROR instead of an out-of-table read. Source references pin the affected code to src/decode.c lines 556-586 as of tag v1.1.7, and the trigger requires the decoder to actually take the SE path; inputs that do not select Second Extension coding do not reach the faulty code.

Know when Libaec 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 5.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.1 MEDIUM

Local decode of attacker data requires victim interaction (UI:R) but no auth (PR:N); low-complexity trigger once input is crafted; crash drives A:H with a limited memory-disclosure C:L and no integrity impact.

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:P/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
Present
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

libaec through 1.1.7 contains an out-of-bounds read vulnerability in m_se_decode() in src/decode.c that allows attackers to bypass a signed bounds check via an overlong fundamental sequence. Attackers can supply a crafted CCSDS 121.0/SZIP stream with 2^31 or more zero bits to crash the decoder or leak adjacent memory into decoded samples.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Medium
specialized entropy-coding library, common via HDF5/SZIP in scientific/HPC data processing
Social Media
1
Sightings
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.2%
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
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

29
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +29
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