Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted SZIP/CCSDS 121.0 stream
-
DeliveryVictim app decodes untrusted input
-
ExploitOverlong fundamental sequence bypasses signed check
-
ExecutionOut-of-bounds read in m_se_decode
-
ImpactDecoder 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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.
EUVD-2026-115217
GHSA-6vjr-59w2-48mg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB