CVE-2025-59734 Heap-buffer-overflow write in FFmpeg SANM process_ftch

High 8.7 Published Updated

A use-after-free vulnerability in FFmpeg's SANM decoder allows attackers to execute arbitrary code or cause denial of service via crafted files.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Local or same network only
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2025-59734?

CVE-2025-59734 is a high-severity use after free vulnerability in FFmpeg, published on 6 Oct 2025. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.

Official description

It is possible to cause an use-after-free write in SANM decoding with a carefully crafted animation using subversion <2.

When a STOR chunk is present, a subsequent FOBJ chunk will be saved in ctx->stored_frame. Stored frames can later be referenced by FTCH chunks. For files using subversion < 2, the undecoded frame is stored, and decoded again when the FTCH chunks are parsed. However, in process_frame_obj if the frame has an invalid size, there’s an early return, with a value of 0. 

This causes the code in decode_frame to still store the raw frame buffer into ctx->stored_frame. Leaving ctx->has_dimensions set to false.

A subsequent chunk with type FTCH would call process_ftch and decode that frame obj again, adding to the top/left values and calling process_frame_obj again. Given that we never set ctx->have_dimensions before, this time we set the dimensions, calling init_buffers, which can reallocate the buffer in ctx->stored_frame, freeing the previous one. However, the GetByteContext object gb still holds a reference to the old buffer.

Finally, when the code tries to decode the frame, codecs that accept a GetByteContext as a parameter will trigger a use-after-free read when using gb.

GetByteContext is only used for reading bytes, so at most one could read invalid data. There are no heap allocations between the free and when the object is accessed. However, upon returning to process_ftch, the code restores the original values for top/left in stored_frame, writing 4 bytes to the freed data at offset 6, potentially corrupting the allocator’s metadata.

This issue can be triggered just by probing whether a file has the sanm format.

We recommend upgrading to version 8.0 or beyond.

Weakness: CWE-416

Which versions are affected by CVE-2025-59734?

How do I fix CVE-2025-59734?

Upgrade to a fixed version.

Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.

Is CVE-2025-59734 being exploited?

There is no known exploitation of CVE-2025-59734 in the wild and no public exploit code.

Sources

Also known as GHSA-g9mr-r3g9-6594, JLSEC-2026-647, MINI-qvwf-6r7r-3h22, UBUNTU-CVE-2025-59734.

Is CVE-2025-59734 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free