Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted MP4 to FFmpeg
-
ExploitParse nested pssh boxes via MOV demuxer
-
ExecutionRecursive free exhausts stack
-
ImpactProcess crashes (denial of service)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires FFmpeg (through 9.0.2) to parse an attacker-supplied MP4/MOV file whose moov structure contains tens of thousands of small 'pssh' (Protection System Specific Header) boxes; the MOV demuxer's mov_read_pssh() builds an AVEncryptionInitInfo linked list that av_encryption_init_info_free() then frees recursively, exhausting the stack. No authentication or privileges are needed (PR:N), but exploitation is limited by: (1) user/victim interaction to feed the file into FFmpeg (UI:P), (2) the local processing vector (AV:L) - the attacker needs their file to reach an FFmpeg decode/demux path, and (3) high complexity (AC:H/AT:P) stemming from the need to generate a large, specifically-structured box count and the quadratic cost. Impact is limited to availability (process crash and CPU exhaustion) with no code execution or data exposure. |
| Impact | This is a genuinely medium-severity denial-of-service issue, and the signals are internally consistent rather than conflicting. The CVSS 4.0 vector (AV:L/AC:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:H) scores 5.7 and correctly reflects an availability-only impact (process crash via stack exhaustion, CWE-674 uncontrolled recursion) with no confidentiality or integrity exposure and no code execution. The vector itself tempers the severity: the attack is local (AV:L), carries high complexity and an attack requirement (AC:H/AT:P, reflecting the need to craft tens of thousands of nested pssh boxes and the quadratic-cost dependency), and requires user/victim interaction (UI:P) to feed the crafted MP4 into FFmpeg. There is no CISA KEV listing and no public exploit code identified in the provided sources (only a vendor advisory and the upstream fix PR), so exploitation status is 'no public exploit identified at time of analysis.' No EPSS score was supplied, so probabilistic exploitation likelihood cannot be quantified here. The one caveat worth flagging: the CVE assigns AV:L, but FFmpeg frequently processes untrusted media received over the network (streaming, upload pipelines, transcoding services); in those deployments the practical reachability is closer to remote-triggered than the AV:L label implies - verify against your actual deployment. Net: a real but modest priority - worth patching in media-processing pipelines, not an emergency. |
| Exploit ScenarioDerived | An attacker crafts a malicious MP4 file containing tens of thousands of small PSSH boxes and submits it to a service or user that transcodes or inspects it with FFmpeg (e.g., an upload/transcoding pipeline). When the MOV demuxer parses the boxes and av_encryption_init_info_free() recursively frees the resulting linked list, the deep recursion exhausts the stack and crashes the process, with additional quadratic CPU consumption. No public exploit code is identified, but the crafting technique is straightforward to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Denial-of-service in FFmpeg through 9.0.2: demuxing a crafted MP4/MOV file containing tens of thousands of minimal pssh boxes triggers uncontrolled recursion in av_encryption_init_info_free(), exhausting the stack and crashing the process, with additional quadratic CPU consumption. No authentication or privileges are required (PR:N), but exploitation is local (AV:L), demands passive user interaction (UI:P) to feed the file into an FFmpeg-based pipeline, and is high complexity (AC:H). Impact is availability-only; there is no code execution or data exposure. The issue is tracked as CWE-674 (uncontrolled recursion), and an upstream fix is proposed in FFmpeg PR 24593; no public exploit code or CISA KEV entry was identified at time of analysis.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed. The proposed fix is FFmpeg PR 24593 (https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24593), so apply that change and rebuild, or wait for a tagged release that incorporates it. Until a patched build is deployed, the most effective compensating control is to avoid demuxing untrusted MP4/MOV files with affected FFmpeg builds-this breaks legitimate media processing for those formats but eliminates the attack surface. If untrusted MP4 input is unavoidable, run FFmpeg in a sandbox with strict CPU/memory limits and a reduced stack (e.g., ulimit -s) to contain the crash; note that stack limiting may cause earlier failures on other deeply recursive inputs and could disrupt legitimate transcoding. Pre-validating or rejecting files with an excessive number of pssh boxes before handing them to FFmpeg can also help, but such filtering must be robust and may be bypassed by other parser quirks. The VulnCheck advisory (https://www.vulncheck.com/advisories/ffmpeg-through-9.0.2-stack-exhaustion-via-recursive-free-of-pssh-boxes) provides further detail.
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
The vulnerability resides in FFmpeg's MOV/MP4 demuxer and libavutil encryption-info handling. Per CPE cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:* and the EUVD range 'FFmpeg 0 ≤ 9.0.2', all releases through 9.0.2 are affected. When mov_read_pssh() (libavformat/mov.c line 8070 in n9.0.2) parses 'pssh' (Protection System Specific Header) boxes, it builds a linked list of AVEncryptionInitInfo structures; each new box is appended, and the quadratic CPU cost arises from repeatedly walking or extending that list. The corresponding cleanup routine av_encryption_init_info_free() (libavutil/encryption_info.c lines 219-231 in n9.0.2) frees the list recursively, so a file with tens of thousands of small pssh boxes produces a recursion depth sufficient to exhaust the process stack and abort. CWE-674 (Uncontrolled Recursion) is the root-cause class: no depth bound or iterative free is applied to attacker-controlled list length. The attack surface is any application that links libavformat/libavutil and demuxes untrusted MP4/MOV content, including media players, transcoders, and file-scanning services.
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:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Triggered only by processing a crafted file (AV:L, UI:R), requiring a specially-structured high-box-count input (AC:H); no privileges (PR:N); impact is availability-only (A:H) with no C/I effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
FFmpeg through 9.0.2 contains a stack exhaustion vulnerability in av_encryption_init_info_free() in libavutil/encryption_info.c, which recursively frees AVEncryptionInitInfo linked lists built by the MOV demuxer's mov_read_pssh(). Attackers can supply a crafted MP4 file with tens of thousands of small pssh boxes to exhaust the stack and crash the process, while also causing quadratic CPU consumption.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
FFmpeg 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-95083
GHSA-rp4v-7m3g-89vg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB