{"id":"CVE-2026-125249","kind":"vulnerability","aliases":["CVE-2026-125249"],"related":[],"title":"FFmpeg: integer overflow in Vulkan decoder lets crafted video write memory","description":"FFmpeg 7.1 through 9.0.2 contains an integer overflow in ff_vk_decode_add_slice() in libavcodec/vulkan_decode.c that miscalculates the Vulkan hwaccel bitstream buffer size. Attackers can supply a crafted stream with over 2 GiB of slice data per frame, causing memcpy() to write past a smaller pooled host-mapped buffer.","summary":"FFmpeg 7.1 through 9.0.2 miscalculates the Vulkan hardware-decode buffer size when a stream carries over 2 GiB of slice data per frame. The resulting memcpy writes past a smaller pooled buffer, which can corrupt memory when FFmpeg decodes a crafted file.","severity":"high","cvss":7.3,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"ffmpeg","fixed":[],"affected":">= 7.1, <= 9.0.2","ecosystem":"vendor"}],"ecosystems":[],"tags":["ffmpeg","libavcodec","media-processing","package","self-hosted","vulkan"],"not_affected_if":["default-config","trusted-input-only"],"how_to_check":"- Run `ffmpeg -version`; versions 7.1 through 9.0.2 are in the affected range.\n- Run `ffmpeg -hwaccels`; only builds listing `vulkan` have the vulnerable path, and only when decoding is actually run with `-hwaccel vulkan` (or an app that selects Vulkan decode).\n- Also check any app or library that bundles libavcodec (media pipelines, thumbnailers) for the same versions.","fix":"No released fix as of 2026-11-09. Upstream PR #25136 (commit 09a6683754 'Vulkan decode: limits a frame's slice data to 2 GiB') is open, not merged, targeted at the 9.1 milestone. Until a release ships, avoid Vulkan hwaccel decoding of untrusted files (use software decode).","status":"open","published_at":"2026-11-09T19:17:03+00:00","first_seen_at":"2026-11-09T19:28:21+00:00","triaged_at":"2026-11-09T19:29:51+00:00","updated_at":"2026-11-09T19:31:47+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-09T19:29:51Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"unknown","title":"FFmpeg: integer overflow in Vulkan decoder lets crafted video write memory","impact":"high","summary":"FFmpeg 7.1 through 9.0.2 miscalculates the Vulkan hardware-decode buffer size when a stream carries over 2 GiB of slice data per frame. The resulting memcpy writes past a smaller pooled buffer, which can corrupt memory when FFmpeg decodes a crafted file.","audience":"developers","category":"package","nicknames":[],"who_cares":["ffmpeg","libavcodec","vulkan","media-processing","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"crafted stream causes memory corruption in the decoder process","analyst_note":"Find the fixed FFmpeg version and the upstream patch for ff_vk_decode_add_slice; see the vulncheck advisory linked from the signal.","how_to_check":"- Run `ffmpeg -version` and compare the version with the affected range 7.1 through 9.0.2.\n- Check whether FFmpeg was built with Vulkan hardware decoding enabled (`ffmpeg -hwaccels` lists `vulkan`).","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["default-config","trusted-input-only"],"who_is_affected":"Systems that run FFmpeg 7.1 through 9.0.2 and decode untrusted video with Vulkan hardware acceleration are exposed, since the flaw is in the Vulkan hwaccel path of libavcodec. Services that only use FFmpeg on trusted input, or builds without Vulkan decoding, are less exposed. The sources do not state the fixed version.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000786,"input_tokens":4635,"output_tokens":645,"severity_before":"high"},"analyst_status":"done","analyst_note":"Find the fixed FFmpeg version and the upstream patch for ff_vk_decode_add_slice; see the vulncheck advisory linked from the signal.","search":"'-125249':14A,17A '-2026':13A,16A '2':46B,104C '7.1':30B,73C '9.0.2':32B,75C 'add':84C 'attack':96C 'bitstream':93C 'buffer':39B,61B,94C,122C 'carri':44B 'caus':111C 'contain':76C 'corrupt':64B 'craft':8A,70B,100C 'cve':12A,15A 'data':50B,108C 'decod':6A,38B,68B,83C 'ff':81C 'ffmpeg':1A,18A,19B,29B,67B,72C 'file':71B 'frame':52B,110C 'gib':47B,105C 'hardwar':37B 'hardware-decod':36B 'host':27B,120C 'host-map':119C 'hwaccel':92C 'integ':2A,78C 'let':7A 'libavcodec':20B 'libavcodec/vulkan_decode.c':87C 'map':121C 'media':22B 'media-process':21B 'memcpi':55B,112C 'memori':11A,65B 'miscalcul':33B,89C 'overflow':3A,79C 'packag':24B 'past':57B,115C 'per':51B,109C 'pool':60B,118C 'process':23B 'result':54B 'self':26B 'self-host':25B 'size':40B,95C 'slice':49B,85C,107C 'smaller':59B,117C 'stream':43B,101C 'suppli':98C 'video':9A 'vk':82C 'vulkan':5A,28B,35B,91C 'write':10A,56B,114C","nicknames":[],"mitigations":[],"who_affected":"Systems running FFmpeg 7.1 through 9.0.2 built with Vulkan and decoding untrusted video through Vulkan hardware acceleration are exposed; a stream with over 2 GiB of slice data per frame is needed. Media pipelines, thumbnailers and transcoders that process user uploads are the ones to look at. Builds without Vulkan, software-only decoding, or trusted input only can skip it. No fixed release exists yet.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"developers","plain_action":null,"pkeys":["ffmpeg"],"ptokens":["ffmpeg"],"labels":["ffmpeg","high","libavcodec","mediaprocessing","package","selfhosted","vulkan"],"campaign_type":null,"search_a":"'-125249':14A,17A '-2026':13A,16A 'craft':8A 'cve':12A,15A 'decod':6A 'ffmpeg':1A,18A 'integ':2A 'let':7A 'memori':11A 'overflow':3A 'video':9A 'vulkan':5A 'write':10A","search_b":"'2':46B '7.1':30B '9.0.2':32B 'buffer':39B,61B 'carri':44B 'corrupt':64B 'craft':70B 'data':50B 'decod':38B,68B 'ffmpeg':19B,29B,67B 'file':71B 'frame':52B 'gib':47B 'hardwar':37B 'hardware-decod':36B 'host':27B 'libavcodec':20B 'media':22B 'media-process':21B 'memcpi':55B 'memori':65B 'miscalcul':33B 'packag':24B 'past':57B 'per':51B 'pool':60B 'process':23B 'result':54B 'self':26B 'self-host':25B 'size':40B 'slice':49B 'smaller':59B 'stream':43B 'vulkan':28B,35B 'write':56B","search_c":"'2':104C '7.1':73C '9.0.2':75C 'add':84C 'attack':96C 'bitstream':93C 'buffer':94C,122C 'caus':111C 'contain':76C 'craft':100C 'data':108C 'decod':83C 'ff':81C 'ffmpeg':72C 'frame':110C 'gib':105C 'host':120C 'host-map':119C 'hwaccel':92C 'integ':78C 'libavcodec/vulkan_decode.c':87C 'map':121C 'memcpi':112C 'miscalcul':89C 'overflow':79C 'past':115C 'per':109C 'pool':118C 'size':95C 'slice':85C,107C 'smaller':117C 'stream':101C 'suppli':98C 'vk':82C 'vulkan':91C 'write':114C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T19:17:03+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-125249","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-125249","severity":null,"published_at":"2026-11-09T19:17:03+00:00","modified_at":"2026-11-09T19:17:03+00:00","first_seen_at":"2026-11-09T19:28:21+00:00","fetched_at":"2026-11-09T19:28:21+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-125249:2319","url":"https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25136","severity":null,"published_at":"2026-11-09T19:31:47+00:00","modified_at":"2026-11-09T19:31:47+00:00","first_seen_at":"2026-11-09T19:31:47+00:00","fetched_at":"2026-11-09T19:31:47+00:00","note":"Read vulncheck advisory (no fixed version, no exploit/PoC stated) and upstream PR 25136, which is open/unmerged with commit 09a6683754 limiting slice data to 2 GiB; fix_status none based on PR state, not a vendor statement, so nothing marked verified. X/web search not attempted (credits exhausted per notes).","cites":["https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25136"]}],"documents":[{"id":109387,"url":"https://www.vulncheck.com/advisories/ffmpeg-7.1-through-9.0.2-heap-out-of-bounds-write-via-vulkan-slice-buffer-sizing","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"},{"id":109481,"url":"https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25136","title":"FFmpeg PR 25136: libavcodec fixes (HEVC/AV1 hwaccel tile arrays, Vulkan) - open","kind":"issue","source":"analyst","publisher":null,"text":"Open PR into master, milestone FFmpeg 9.1 branching, 0/1 approvals. Commit 21017c72db: vdpau_hevc rejects tile counts the VDPAU picture info cannot hold. Also vaapi, dxva2, vulkan HEVC tile-count checks. Each commit message cites a security report from AISLE.","published_at":null,"relation":"describes","confidence":null,"note":null}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}