Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted type-0 CDXL file to victim
-
DeliveryVictim decodes file in FFmpeg
-
ExploitHAM pixels select unfilled palette entries
-
ExecutionUninitialized stack bytes copied to BGR24 output
-
ImpactAttacker recovers leaked memory from rendered frame
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Variable initialization checks
|
| Exploitation Conditions | Exploitation requires that FFmpeg decode an attacker-crafted type-0 CDXL file whose HAM pixels in cdxl_decode_ham8() or cdxl_decode_ham6() select new_palette entries that import_palette() never filled; those unfilled entries are what emit uninitialized stack memory into the BGR24 output. Limiting factors: the CVSS vector is local (AV:L) and requires passive user interaction (UI:P) - the malicious file must be processed/opened in a context using the CDXL decoder - and the data only reaches the attacker if the decoded output is returned to or observed by them. No authentication is required (PR:N). The vulnerable path is the niche CDXL HAM6/HAM8 decode mode, not a default network-facing surface. |
| Impact | This is a moderate-severity information-disclosure issue (CWE-457, use of uninitialized variable), not a priority emergency. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N, 6.8) shows the dominant limiting factors clearly: the vector is LOCAL (AV:L) and requires passive user interaction (UI:P) - a victim must decode an attacker-supplied CDXL file - while impact is confined to confidentiality (VC:H) with no integrity or availability effect, consistent with a stack-memory leak into decoded pixels. No EPSS score and no KEV/SSVC automatable signal were supplied, so exploitation probability cannot be quantified from the input; the vuln.today decision label is 'this_month', i.e. patch on a routine cadence rather than act_now or emergency. The confidentiality rating is high because the leak can expose pointer fragments (useful for defeating ASLR), but realistically the attacker only benefits if the rendered BGR24 output is returned to them, which bounds practical exploitability. Net: a genuine but non-urgent memory-disclosure bug whose risk is capped by local vector, required user interaction, and the niche CDXL HAM decode path rather than a high-CVSS/low-real-risk mismatch. |
| Exploit ScenarioDerived | An attacker crafts a malicious type-0 CDXL video file whose HAM pixels reference palette slots that were never populated, then gets a victim or an automated pipeline to decode it with FFmpeg. During cdxl_decode_ham8()/cdxl_decode_ham6() the unfilled new_palette entries emit uninitialized stack bytes and pointer fragments into the BGR24 output frame, which the attacker can read back if the decoded image is returned, transcoded, or displayed to them. No public exploit identified at time of analysis; only the vendor fix PR and patch commit are referenced. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 01, 2026
Stack memory disclosure in FFmpeg 4.4 through 9.0.2 occurs in the niche CDXL decoder: when a crafted type-0 CDXL file is decoded in HAM6 or HAM8 mode, pixel values can index palette slots that import_palette() never populated, and those uninitialized stack bytes - including pointer fragments - are written into the BGR24 output frame. An attacker who can get a victim to open or process such a file, and who can observe the resulting decoded frames, may recover residual process memory; no authentication is required, but the assessed vector is local with passive user interaction (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N), so impact is limited to confidentiality of data that is actually returned to the attacker. No public exploit code or CISA KEV entry is associated with this issue at time of analysis, and the vendor fix is upstreamed as a commit/PR rather than a confirmed tagged release.
RemediationAI
Upstream fix available (commit/PR); released patched version not independently confirmed. Apply FFmpeg commit 47313ad3f9f33b892384b976fb7c09b3c85fd74e (tracked as pull request https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24856 - https://github.com/FFmpeg/FFmpeg/commit/47313ad3f9f33b892384b976fb7c09b3c85fd74e), which makes import_palette() report the number of filled entries and makes cdxl_decode_ham6()/cdxl_decode_ham8() return AVERROR_INVALIDDATA when a HAM pixel selects an out-of-range index, then rebuild and redeploy libavcodec, or wait for the corresponding distro/embedded-vendor rebuild that backports it. Because vendor patch data marks the fix as available but no tagged release version is confirmed in the available sources, confirm with the downstream packager which build contains the change. Where patching is delayed, the practical compensating control is to remove the CDXL decoder from the build (for example by not compiling libavcodec/cdxl.c or by disabling the CDXL demuxer/decoder in the configuration), trading away all CDXL playback; alternatively, restrict untrusted input handling so CDXL content is never fed to the decoder in a context where decoded frames are returned to an untrusted party, at the cost of blocking legitimate Amiga CDXL media. Note that the leak only materialises when the decoded BGR24 output is observed by the attacker, so keeping decode output inside a trusted boundary reduces exposure but does not fix the underlying uninitialized read.
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
CDXL is the Commodore Amiga streaming video container format, and FFmpeg handles it in libavcodec/cdxl.c. The decoder supports planar/raw modes as well as Amiga Hold-And-Modify modes, where each pixel's low bits modify one of the RGB channels of the previous pixel and the high bits select a base palette entry. import_palette() copies the file-declared palette into a stack-local new_palette array based on c->palette_size, but the HAM6/HAM8 loops in cdxl_decode_ham6() and cdxl_decode_ham8() did not check that the index derived from the bitstream was within the number of colors actually imported. Root cause is CWE-457 (use of uninitialized variable): a crafted type-0 file with a short palette causes HAM pixels to read new_palette entries that were never written, and those stack contents are emitted into the decoded BGR24 plane. The upstream fix (commit 47313ad3f9f33b892384b976fb7c09b3c85fd74e, pull request 24856) changes import_palette() to return the number of imported colors (palette_size / 2 or / 3 depending on format), converts cdxl_decode_ham6() and cdxl_decode_ham8() to return int, rejects any index >= nb_colors with AVERROR_INVALIDDATA, and propagates that error from cdxl_decode_frame().
Know when Ffmpeg 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:H/VI:N/VA:N/SC:N/SI:N/SA:N
Local attacker-supplied file decoded by a victim gives AV:L and UI:R with no auth (PR:N); impact is confidentiality-only (leaked stack/pointer bytes), so C:H, I:N, A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
FFmpeg 4.4 through 9.0.2 contains a use of uninitialized variable vulnerability in the CDXL decoder that leaks stack memory into decoded pixels via unfilled HAM palette entries. Attackers can craft a type-0 CDXL file whose HAM pixels select unfilled new_palette entries in cdxl_decode_ham8() or cdxl_decode_ham6(), exposing stack bytes and pointer fragments in the BGR24 output.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Related Vulnerabilities in FFmpeg Decoder Uninitialized Memory Leaks
View all 5FFmpeg 2.x allows remote attackers to conduct cross-origin attacks and read arbitrary files by using the concat protocol
FFmpeg before 2.8.12, 3.0.x and 3.1.x before 3.1.9, 3.2.x before 3.2.6, and 3.3.x before 3.3.2 does not properly restric
FFmpeg 2.x allows remote attackers to conduct cross-origin attacks and read arbitrary files by using the subfile protoco
The av_reallocp_array function in libavutil/mem.c in FFmpeg before 2.0.1 has an unspecified impact and remote vectors re
cbs_jpeg_split_fragment in libavcodec/cbs_jpeg.c in FFmpeg 4.1 and 4.2.2 has a heap-based buffer overflow during JPEG_MA
Out-of-bounds heap write in FFmpeg's RASC video decoder (decode_dlta in libavcodec/rasc.c) allows attackers to corrupt m
Memory corruption in FFmpeg before 8.1 allows an attacker who can supply a crafted H.264/HEVC media file to corrupt heap
Integer Overflow vulnerability in function filter_sobel in libavfilter/vf_convolution.c in Ffmpeg 4.2.1, allows attacker
Integer Overflow vulnerability in function filter_robert in libavfilter/vf_convolution.c in Ffmpeg 4.2.1, allows attacke
Integer Overflow vulnerability in function filter_prewitt in libavfilter/vf_convolution.c in Ffmpeg 4.2.1, allows attack
Integer Overflow vulnerability in function filter16_sobel in libavfilter/vf_convolution.c in Ffmpeg 4.2.1, allows attack
Integer Overflow vulnerability in function filter16_roberts in libavfilter/vf_convolution.c in Ffmpeg 4.2.1, allows atta
EUVD-2026-114743
GHSA-76cq-jhfp-r489
NVD
CVE.org
VulDB
Exploit-DB