CVE-2025-59734

Source
https://cve.org/CVERecord?id=CVE-2025-59734
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-59734.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2025-59734
Downstream
Published
2025-10-06T08:09:44.280Z
Modified
2026-07-08T08:09:10.972462348Z
Severity
  • 8.7 (High) CVSS_V4 - CVSS:4.0/AV:A/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N CVSS Calculator
Summary
Heap-buffer-overflow write in FFmpeg SANM process_ftch
Details

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->storedframe. 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 processframe_obj if the frame has an invalid size, there’s an early return, with a value of 0. 

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

A subsequent chunk with type FTCH would call processftch and decode that frame obj again, adding to the top/left values and calling processframeobj again. Given that we never set ctx->havedimensions before, this time we set the dimensions, calling initbuffers, which can reallocate the buffer in ctx->storedframe, 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 processftch, the code restores the original values for top/left in storedframe, 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.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/59xxx/CVE-2025-59734.json",
    "cna_assigner": "Google",
    "cwe_ids": [
        "CWE-416"
    ]
}
References

Affected packages

Git / git.ffmpeg.org/ffmpeg.git

Affected ranges

Type
GIT
Repo
https://git.ffmpeg.org/ffmpeg.git
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed
Introduced
Fixed
Database specific
{
    "source": "AFFECTED_FIELD",
    "extracted_events": [
        {
            "introduced": "4d7c609be37dc57d31527c8c9e5945dc9491a7cd"
        },
        {
            "fixed": "8.0"
        },
        {
            "introduced": "7.1.1"
        }
    ]
}

Affected versions

Other
N
n0.*
n0.11-dev
n0.12-dev
n0.8
n1.*
n1.1-dev
n1.2-dev
n1.3-dev
n2.*
n2.0
n2.1-dev
n2.2-dev
n2.3-dev
n2.4-dev
n2.5-dev
n2.6-dev
n2.7-dev
n2.8-dev
n2.9-dev
n3.*
n3.1-dev
n3.2-dev
n3.3-dev
n3.4-dev
n3.5-dev
n4.*
n4.1-dev
n4.2-dev
n4.3-dev
n4.4-dev
n4.5-dev
n5.*
n5.1-dev
n5.2-dev
n6.*
n6.1-dev
n6.2-dev
n7.*
n7.1-dev
n7.2-dev

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-59734.json"